1 PRÉSENTATION DES DONNÉES ET CONTEXTUALISATION GÉNÉRALE

1.1 Packages nécessaires

# Librairies utilisées
library(sf)
library(cartography)
library(mapsf)
# library(corrplot)
# library(cowplot)
# library(MTA)
library(readxl)
library(ggplot2)
library(FactoMineR)
library(factoextra)
library(cluster)
library(reshape)
library(reshape2)
# library(flows)
# NB : Pour le package flows, la version la plus récente est disponible ici :
# remotes::install_github("rCarto/flows") ou # install.packages("mapsf")
# Pour obtenir une version plus ancienne (celle utilisée ici) : https://cran.r-project.org/src/contrib/Archive/flows/
# install.packages("packages/flows_1.1.1.tar.gz", repos=NULL, type="source")
# library(sp)
library(knitr)
# library(condformat) # https://cran.r-project.org/web/packages/condformat/vignettes/introduction.html
# library(units)
# library(stringr)
# library(dplyr)
# library(questionr)
# library(spdep) # Pour les matrices de contiguïté
library(rgeoda) # Pour les matrices de contiguïté
# library(rgdal) # Pour lire fichiers geodatabases

# Liste pour installer les packages si besoin :
# sf cartography mapsf readxl foreign dplyr flextable knitr stringr units condformat forcats ggplot2 rstatix questionr corrplot gtsummary broom GGally effects forestmodel ggeffects labelled cowplot spdep rgeoda

1.2 Import des couches géographiques consolidées

Les données utilisées sont une compilation de données principalement socio-économiques, localisées. La source principale est l’INSEE. Pour plus de détails, cf. le Markdown “Communes nouvelles : préparation des données”. NB : Ont été exclues des analyses l’Outre-mer et la Corse, espaces non concernés par les communes nouvelles.

Les géométries sont ici importées.

geom2011 <- st_read("data/geom.gpkg", layer = "geom2011", quiet = TRUE) 
geom_new <- st_read("data/geom.gpkg", layer = "geom_new", quiet = TRUE) 
geomfus2011 <- st_read("data/geom.gpkg", layer = "geomfus2011", quiet = TRUE) 
geomCN_new <- st_read("data/geom.gpkg", layer = "geomCN_new", quiet = TRUE)  
dep <- st_read("data/geom.gpkg", layer = "dep", quiet = TRUE)

# Pour faciliter la cortographie
# ShpDep <- as(dep, "Spatial")
ShpDep <- as_Spatial(dep) # Pose moins de problème

# Métadonnées
# Liste toutes les variables disponiles
# variables_dispo <- as.data.frame(read_excel("data-raw/meta.xlsx", sheet = "ind_target"))
# Liste les variables marquées dans le fichier meta_budgets.xlsx comme nous intéressant
# target <- subset(variables_dispo, variable_selec == "X")

1.3 Import des géométries des arrondissements

# Import des géométries des arrondissements
# Données transmises par Ludovic Chalonge (suite à une demande de Nicolas Verdier), le 30 août 2023.

# ## Ancienne version en utilisant le package rgdal
# The input file geodatabase
# fgdb <- "data-raw/arrdtv3.gdb"
# # List all feature classes in a file geodatabase
# subset(ogrDrivers(), grepl("GDB", name))
# fc_list <- ogrListLayers(fgdb)
# print(fc_list)
# date_choisie <- "1931"
# # Read the feature class
# arrondissements <- readOGR(dsn=fgdb,layer= paste0("aarrdt", date_choisie))
# projCodes <- make_EPSG() # Lister les différentes projections existant
# selecRgf <- projCodes[grep("RGF", projCodes$note), ] # Sélectionner certaines projections
# ShpDep2 <- spTransform(x = ShpDep, CRSobj = CRS("+init=epsg:2154")) # Transformer un objet dans la projection RGF

st_layers(dsn = "data-raw/arrdtv3.gdb")
date_choisie <- "1931"
arrondissements <- st_read("data-raw/arrdtv3.gdb", layer= paste0("aarrdt", date_choisie))
rm (date_choisie)


plot(arrondissements[1])

arrondissements <- st_transform(x = arrondissements, crs = st_crs(geom2011))

Les données socio-économiques qui décrivent les communes en géographies 2011 et 2021 sont ici importées. On commence par extraire les communes ayant participé à la création d’une commune nouvelle, appelées ici communes fusionnantes (datafus2011), les communes nouvelles, avec les géométries au 1er janvier 2021 et caractérisées par les données à la géométrie 2011 agrégées (dataCN_new), ainsi que les communes, à la géométrie 2011, qui n’ont pas participé à la création d’une commune nouvelle (dataNfus2011)

load("data/refdata.Rdata")
# datafus2011 <- subset(df2011, COM_NOUV == "OUI")
# dataCN_new <- subset(df_new, COM_NOUV == "OUI")
# dataNfus2011 <- subset(df2011, COM_NOUV == "NON") 

1.4 Jointure données / géométries

Dans un certain nombre de cas, il sera utile d’avoir, dans un même objet, les données et les géométries. Les données sont ici jointes aux couches géographiques d’intérêt.

geom2011 <- merge(geom2011, df2011, by = "CODGEO")
geom_new <- merge(geom_new, df_new, by = "CODGEO_new")
# geomCN_new <- merge(geomCN_new, dataCN_new, by = "CODGEO_new")
# geomfus2011 <- merge(geomfus2011, datafus2011, by = "CODGEO")

1.5 Définition de sous-ensembles pour les tests

Un certain nombre d’espaces peuvent être étudiés à part : certaines communes nouvelles car elles ont été l’objet d’une enquête qualitative (Bideau (2017), Bideau (2019)), d’autres car elles sont sur des territoires très touchés par les fusions communales. Ces sous-ensembles sont cartographiés dans la section 1.7.

testEdC <- subset (geom2011, CODGEO_new == "61324" | CODGEO_new =="73150" | CODGEO_new == "73006")
testEdCSavoie <- subset (geom2011, CODGEO_new =="73150" | CODGEO_new == "73006")
testNormandie <- subset (geom2011, REG == "23" | REG == "25") # Haute et Basse Normandie
test49 <- subset (geom2011, CODE_DEPT == "49" ) # Département du Maine-et-Loire
testOuest <- subset (geom2011, REG == "23" | REG == "25"| REG == "53"| REG == "52") # Normandies, Bretagne, Pays-de-la-Loire

1.6 Une base très riche : la base Cassini

Le site Cassini a été créé par l’EHESS, permet de retrouver des évolutions très nombreuses concernant les communes françaises.

Lien donné par Nicolas Verdier (juillet 2023) : https://didomena.ehess.fr/concern/data_sets/6395wb092?locale=fr (base en cours d’attribution d’un DOI, possiblement réalisation d’un data paper).

Concernant les codes utilisés dans les colonnes pop_xxxx_info (“xxxx” étant une date), voici les informations données par Bertrand Dumenieu à Nicolas Verdier, en sachant que c’est à se faire confirmer par Claude Motte.

  • adm. : désigne une commune administrée. Lorsqu’une commune ne pouvait pas être auto-administée, par exemple car personne ne savait suffisamment bien écrire pour assurer les missions de maire, ou que la commune était trop minuscule, elle pouvait être rattachée à une voisine “tutelle” qui, alors, l’administrait. En général une commune administrée était rapidement fusionnée à celle qui les administrait ;

  • ill. : la ligne du recensement est illisible ;

  • lac. : la commune existe à la date du recensement mais elles est absente du document pour une raison inconnue ;

  • pop. : ce marqueur indique qu’il y a une valeur de population connue et reportée à cette date ;

  • si. : “sans information”. Cela couvre deux situations : soit la commune n’existe pas à cette date, soit on ne dispose d’aucune information permettant de dire qu’elle existe.

Donc, adm., ill., lac. et pop. concernent des communes qui existent. On considérer qu’une commune marquée “si” n’existe pas à la date correspondante.

1.6.1 Import et nettoyage des données

# download.file("https://didomena.ehess.fr/downloads/kd17cw827?locale=fr", "data-raw/temps_long/lieux_cassini_devenus_communes.csv")
# Téléchargement effectué le 6 mars 2023

cassini <- read.csv("data-raw/temps_long/lieux_cassini_devenus_communes.csv",
                            sep=",", colClasses = "character", head = TRUE, stringsAsFactors = TRUE, fill = TRUE)


# Pour simplifier la suite, on remplace dans la base Cassini les mentions "an3" et "an8" par "1795" et "1800".
# Syntaxe qui nécessite de vérifier que c'est la bonne colonne qu'on modifie :
# colnames(cassini)[30]
colnames(cassini)[30] <- "district_1795"
# colnames(cassini)[31]
colnames(cassini)[31] <- "departement_1795"
# colnames(cassini)[35]
colnames(cassini)[35] <- "pop_1795_info"
# colnames(cassini)[36]
colnames(cassini)[36] <- "pop_1795_val"
# colnames(cassini)[37]
colnames(cassini)[37] <- "pop_1800_info"
# colnames(cassini)[38]
colnames(cassini)[38] <- "pop_1800_val"

# Tentative de liaison entre la base cassini et la base DAC
load("Archives/data_prep 2011-2021(01)/data/refdata.Rdata")

cassini <- merge(cassini, df_new[, c("CODGEO_new", "NbrComFus")], by.x = "commune_mars_2021", by.y = "CODGEO_new")
# Attention, dans la base Cassini, les communes_mars_2021 sont présentes plusieurs fois

# La variable "departement_1999" permet de localiser l'ensemble des communes. Ce qui permet d'isoler certaines parties du territoire
# table(is.na(cassini$commune_mars_2021))

# Pour la commune de Vornay (Cher), la base indique "s" comme département. On remplace par "18".
# cassini$nom_1999[which(cassini$departement_1999 == "s")]
cassini$departement_1999[which(cassini$departement_1999 == "s")] <- 18
# On corrige simplement les départements avec un seul chiffre (1, 2, 3 etc) pour homogénéiser (transformés en 01, 02, 03 etc)
cassini$departement_1999 <- stringr::str_pad(cassini$departement_1999, 2, pad = "0")
print ("Les départements 1999 représentés dans la base Cassini")
## [1] "Les départements 1999 représentés dans la base Cassini"
table(cassini$departement_1999)
## 
##   01   02   03   04   05   06   07   08   09   10   11   12   13   14   15   16 
##  510  911  441  269  201  166  386  559  477  504  506  678  126  929  290  459 
##   17   18   19   21   22   23   24   25   26   27   28   29   30   31   32   33 
##  544  330  339  759  401  408  721  703  419  872  473  310  398  671  697  613 
##   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49 
##  389  375  297  325  618  765  393  332  368  304  231  372  472  448  206  428 
##   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64   65 
##  695  723  559  294  679  605  268  994  403  705  769  634 1022  502  683  517 
##   66   67   68   69   70   71   72   73   74   75   76   77   78   79   80   81 
##  279  593  400  318  678  643  421  344  337   15 1001  593  278  373 1017  397 
##   82   83   84   85   86   87   88   89   90   91   92   93   94   95 
##  272  163  168  336  356  253  569  498  108  210   36   40   49  199
# Dans certains enregistrements, il y a la mention "lac" alors que normalement c'est "lac.". On procède donc au remplacement
table(cassini$pop_1820_info) # Par exemple
## 
##  adm.  ill.   lac  lac.   pop    si 
##   388    37     8    32 38653  4271
cassini[cassini == "lac"] <- "lac."

# Possible de retirer certains départements
# cassini_reduite <- subset(cassini, departement_1999 != "2A" & departement_1999 != "2B" & departement_1999 != "73" & departement_1999 != "74")
# table(cassini_reduite$departement_1999)

1.7 Jointure base Cassini avec géométries communales

# Tranformation du data.frame cassini en objet spatial grâce au champs "position_cassini"
cassini_pos <- st_sf(
  cassini,
  geometry = st_as_sfc(cassini$position_cassini),
  crs = "EPSG:2154"
)

# Changement de la projection pour correspondre à celle des communes
cassini_pos <- st_transform(x = cassini_pos, crs = st_crs(geom2011))

# Jointure spatiale 
# Nous voulons obtenir les informations du polygones dans lequel se trouve chaque point de la géométrie cassini_pos
cassini_pos <- st_join(x = cassini_pos, y = geom2011[, "CODGEO"], join = st_intersects)
# Les dernières colonnes de cassini sont les variables (1 seule ici, CODGEO) de la table des polygones
head(cassini_pos[, c(1:4, ncol(cassini_pos)-1)])
## Simple feature collection with 6 features and 5 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: 3926010 ymin: 2549664 xmax: 3966608 ymax: 2573801
## Projected CRS: ETRS89-extended / LAEA Europe
##   commune_mars_2021   gid noacass featuretype CODGEO                geometry
## 1             01001 25046   60010     clocher  01001 POINT (3928662 2570876)
## 2             01001 25045      40     clocher  01001 POINT (3928602 2573801)
## 3             01002 25047   18174     clocher  01002 POINT (3966608 2554822)
## 4             01004 25048     592       bourg  01004 POINT (3961238 2549664)
## 5             01004 25049   60001      hameau  01004 POINT (3964688 2550963)
## 6             01005 25050     591     clocher  01005 POINT (3926010 2555996)
# On renome la colonne CODGEO pour davantage de clarté
colnames(cassini_pos)[ncol(cassini_pos)-1]
## [1] "CODGEO"
colnames(cassini_pos)[ncol(cassini_pos)-1] <- "CODGEO_2011"


# Problème : il y a plusieurs communes dont on ne repère pas la position ainsi
cassini_prbl_pos <- subset (cassini_pos, is.na(cassini_pos$CODGEO))
# On observe par départements
table(cassini_prbl_pos$departement_1999)
## 
## 08 13 17 22 25 29 33 34 44 50 56 57 59 64 66 68 74 80 83 85 
##  5  6  9  2  2  6  1  1  3  1  3 14  4  1  2  1  3  2  6  2
# Et cartographiquement
plot(cassini_prbl_pos$geometry)

nrow(cassini_prbl_pos)
## [1] 74
# La très grande majorité de ces communes sont sur les frontières françaises, mais elles ne sont que 74.
# Dans le cas où une part sont liées à des questions sur la Corse
# nrow (subset(cassini_prbl_pos, cassini_prbl_pos$departement_1999 != "2A" & cassini_prbl_pos$departement_1999 != "2B"))


rm(cassini_prbl_pos)

1.8 Aperçu des “si” dans la base Cassini

# NB : Sans doute y a-t-il moyen de faire beaucoup plus simple sans boucle, mais pas trouvé là
i <- 1
cassini$nbr_si <- NA

# Pour chaque ligne, on compte le nombre de "si" et on le met dans la colonne "nbr_si"
for (i in 1:nrow(cassini)) {
  ligne <- as.vector(cassini[i,])
  cassini[i, "nbr_si"] <- sum(ligne == "si")
}

test  <- subset(cassini, cassini$nbr_si == 1)
write.csv(test, "sorties/cassini_si_une_fois.csv", row.names=FALSE)

test  <- subset(cassini, cassini$nbr_si < 6 & cassini$nbr_si > 0)
write.csv(test, "sorties/cassini_si_une_a_cinq_fois.csv", row.names=FALSE)

1.9 Ajout des données de population 2011 et récentes [Jachère]

# On joint les données de population à la géométrie 2011
cassini_test <- merge (cassini_pos, df2011[, c("CODGEO", "P09_POP")], by.x = "CODGEO_2011", by.y = "CODGEO")
# On renome pour plus de clarté
colnames(cassini_test)[ncol(cassini_test)-1]
colnames(cassini_test)[ncol(cassini_test)-1] <- "pop_2011_val"
# N'EST PAS ADAPTÉ PUISQUE LES POPULATIONS SONT PRÉSENTES POUR TOUTES LES COMMUNES ET PAS SEULEMENT POUR CELLES QUI SONT ENCORE ACTIVES

1.10 Jointure Cassini - Arrondissements [Jachère]

Laissé de côté pour l’instant.

# Jointure spatiale 
# Nous voulons obtenir les informations du polygones dans lequel se trouve chaque point de la géométrie cassini_pos
cassini_pos <- st_join(x = cassini_pos, y = arrondissements[, 1], join = st_intersects)

# Les dernières colonnes de cassini sont les variables (1 seule ici, CODGEO) de la table des polygones
head(cassini_pos[, c(1:4, ncol(cassini_pos)-1)])

# On renome la colonne CODGEO pour davantage de clarté
# colnames(cassini_pos)[ncol(cassini_pos)-1]
# colnames(cassini_pos)[ncol(cassini_pos)-1] <- "nom_arrond"

2 ÉVOLUTION GÉNÉRALE

Il y a peu de bases de données présentant l’évolution du nombre de communes depuis leur création lors de la Révolution française. En général, la question du changement de périmètre (perte ou acquisition de territoires, les territoires d’outre-rhin, Nice et la Savoie, Alsace-Moselle etc) n’est pas évoquée.

2.1 Évolution sommaire

# 1793-1999
# Source : http://cassini.ehess.fr/fr/html/8_glossaire.php?d=BDCarto à la définition du nom "commune"
annees <- c(1793, 1800, 1806, 1876, 1936, 1968, 1975, 1999)
nbr_com <- c(40431, 40345, 40210, 37745, 38014, 37708, 36296, 36565)
# 1876  y compris l’Alsace-Lorraine
graph <- data.frame(annees, nbr_com)

# ajout données 2023 pour voir (sources INSEE, France métropolitaine + oute-mer)
graph[nrow(graph)+1, ] <- c(1982, 36433)
graph[nrow(graph)+1, ] <- c(2012,   36571)
graph[nrow(graph)+1, ] <- c(2023, 34945)


# plot(annees, nbr_com)

ggplot(data=graph, aes(x=annees, y=nbr_com)) +
  geom_line() +
  labs(title="Évolution du nombre de communes en France", subtitle="1793-2023", x="", y = "", caption="Source : cassini.ehess.fr")

ggplot(data=graph, aes(x=annees, y=nbr_com)) +
  geom_line() +
  ylim(0, 41000) +
  labs(title="Évolution du nombre de communes en France", subtitle="1793-2023", x="", y = "", caption="Source : cassini.ehess.fr")

rm (annees)

2.2 Exploration graphique de la base Cassini

Proposition d’une exploitation pour avoir quelques graphiques un peu propres.

# On peut aussi utiliser la colonne "intendances_types"
print ("Les types d'intendances représentés dans la base Cassini")
## [1] "Les types d'intendances représentés dans la base Cassini"
table(cassini$intendances_types)
## 
##                                               
##                                             2 
##                                    intendance 
##                                         41322 
##                         intendance,intendance 
##                                           962 
##              intendance,intendance,intendance 
##                                            21 
##             intendance,souveraineté étrangère 
##                                            16 
##                        souveraineté étrangère 
##                                          1025 
##             souveraineté étrangère,intendance 
##                                            26 
## souveraineté partagée ou contestée,intendance 
##                                            15
# On décide d'enlever les territoires qui, au départ, étaient au moins en partie sous souveraineté étrangère
cassini_reduite <- subset(cassini, intendances_types != "intendance,souveraineté étrangère" & intendances_types != "souveraineté étrangère" & intendances_types != "souveraineté étrangère,intendance" & intendances_types != "souveraineté partagée ou contestée,intendance")
# On enlève également les territoires perdus en 1870 (Alsace, Moselle)
cassini_reduite <- subset(cassini_reduite, departement_1999 != "57" & departement_1999 != "67" & departement_1999 != "68")
# table(cassini_reduite$departement_1999)

# Test pour ne sélectionner que l'Alsace-Moselle
# cassini_reduite <- subset(cassini, departement_1999 == "57" | departement_1999 == "67" | departement_1999 == "68")



# En l'absence de méta-données détaillées, on choisit de ne s'intéresser qu'aux communes dont la population est renseignée ou simplement lacunaire (devrait être renseignée). On postule que les autres indications désignent des communes n'existant pas à l'époque.
print ("Les types d'informations renseignées pour le recensement de l'an 3 (1794-1795)")
## [1] "Les types d'informations renseignées pour le recensement de l'an 3 (1794-1795)"
table (cassini_reduite$pop_1795_info)
## 
##  abs.  adm.  lac.   pop    si 
##   215    31   136 36917  3102
# On cherche les noms des colonnes qui contiennent le motif "_info"
labels_data_pop <- colnames(cassini[grep(pattern = "_info", colnames(cassini), ignore.case = FALSE)])
label <- labels_data_pop [2] # Si besoin pour tests

evol_nbr_com <- data.frame() # Création d'un objet pour récupérer les résultats totaux
evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite

# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
  annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
  sous_tableau <- subset(cassini, cassini[, label] == "pop" | cassini[, label] == "lac." | cassini_reduite[, label] == "abs." | cassini[, label] == "ill.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
  # sous_tableau <- subset(cassini, cassini[, label] == "pop") # Juste avec les populations connues
  nbr_com <- nrow(sous_tableau) # On compte le nombre de communes
  
  sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs." | cassini[, label] == "ill.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
  # sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
  nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
  
  i <- c(annee, nbr_com) # On compile les résultats totaux
  i_reduit <- c(annee, nbr_com_reduit) # On compile les résultats totaux
  evol_nbr_com <- rbind(evol_nbr_com, i, stringsAsFactors = FALSE)
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}

# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011) 
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021 <- as.data.frame(unique(cassini$commune_mars_2021))
colnames(CODGEO_2021) <- "CODGEO_new"
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021 <- merge(df_new[c("CODGEO_new", "NbrComFus")], CODGEO_2021, by = "CODGEO_new", all.y = TRUE)
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021$NbrComFus[is.na(CODGEO_2021$NbrComFus)] <- 1
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1

i_2011 <- c(2011, sum(CODGEO_2021$NbrComFus))
i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus))
evol_nbr_com <- rbind(evol_nbr_com, i_2011)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)


# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021 <- c(2021, length(unique(cassini$commune_mars_2021)))
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)))

evol_nbr_com <- rbind(evol_nbr_com, i_2021)
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)

colnames (evol_nbr_com) <- c("annees", "nbr_com")
colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com")
evol_nbr_com$base <- "tout"
evol_nbr_com_reduit$base <- "tjr_fr"

evol_nbr_com <- rbind(evol_nbr_com, evol_nbr_com_reduit)

# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800

evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne



ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com, group=base)) +
  geom_line(aes(group = base, linetype = base)) +
  scale_linetype(name = "Périmètre", labels = c("Territoires toujours français", "Toute base Cassini")) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) +
  labs(title="Évolution du nombre de communes", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com, group=base)) +
  geom_line(aes(group = base, linetype = base)) +
  scale_linetype(name = "Périmètre", labels = c("Territoires toujours français", "Toute base Cassini")) +
  ylim(0, 41000) +
  labs(title="Évolution du nombre de communes", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

rm(label, annee, sous_tableau, nbr_com, i, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021, i_2021_reduit, CODGEO_2021, CODGEO_2021_reduit, i_2011, i_2011_reduit)

2.3 Se concentrer sur les données les plus fiables

La base Cassini est très riche, mais elle reste tributaire des sources, parfois peu fiables. Ainsi, les données indiquées comme “An 3” (1794-1795) peuvent être considérées comme peu fiables. Nous les retirons donc de l’analyse.

cassini <- subset(cassini, select= -c(pop_1795_info, pop_1795_val))
labels_data_pop <- colnames(cassini[grep(pattern = "_info", colnames(cassini), ignore.case = FALSE)])

3 CARTOGRAPHIE COMMUNES APPARAISSANT/DISPARAISSANT

num <- 5

# On s'intéresse à un recensement, qui n'est pas le premier car il va falloir regarder le recensement précédent également
# On repère ce recensement par sa place dans la liste des recensements
for (num in 2:length(labels_data_pop)) {
  annee <- substr(labels_data_pop[num], start =5, stop = nchar(labels_data_pop[num])-5) # On repère le n° de l'année en segmentant le label
  annee_preced <- substr(labels_data_pop[num-1], start =5, stop = nchar(labels_data_pop[num-1])-5) # On repère le n° de l'année en segmentant le label
  
  sous_tableau <- cassini_pos[, c("nom_1999", "commune_mars_2021", labels_data_pop[c(num-1, num)])]
  colnames(sous_tableau) <- c("nom_1999", "commune_mars_2021", "pop_situation_avant", "pop_date_ref", "geometry") # On renomme les colonnes
  # On copie les données dans des colonnes destinées à être modifiées. Pas nécessaire de les créer ainsi mais permet de clarifier la démarche
  sous_tableau$situation_avant <- sous_tableau$pop_situation_avant
  sous_tableau$date_ref <- sous_tableau$pop_date_ref
  
  # On indique si la commune existe ou non à la date de référence     VÉRIFIER QUE CELA EST COHÉRENT AVEC LA SIGNIFICATION DES CODES
  sous_tableau$date_ref[sous_tableau$date_ref == "pop" 
                        | sous_tableau$date_ref == "lac." 
                        | sous_tableau$date_ref == "abs." 
                        | sous_tableau$date_ref == "adm."
                        | sous_tableau$date_ref == "ill."
                        ] <- "Existante"
  sous_tableau$date_ref[sous_tableau$date_ref != "Existante"] <- "Inexistante"
  # table(sous_tableau$date_ref)
  
  # On indique si la commune existe ou non à la date précédente
  sous_tableau$situation_avant[sous_tableau$situation_avant == "pop" 
                               | sous_tableau$situation_avant == "lac." 
                               | sous_tableau$situation_avant == "abs."
                               | sous_tableau$situation_avant == "adm."
                               | sous_tableau$situation_avant == "ill."
                               ] <- "Existante"
  sous_tableau$situation_avant[sous_tableau$situation_avant != "Existante"] <- "Inexistante"
  # table(sous_tableau$situation_avant)
  
  sous_tableau$evol_situation[sous_tableau$situation_avant == "Existante" & sous_tableau$date_ref == "Existante"] <- "Perdure"
  sous_tableau$evol_situation[sous_tableau$situation_avant == "Existante" & sous_tableau$date_ref == "Inexistante"] <- "Disparition"
  sous_tableau$evol_situation[sous_tableau$situation_avant == "Inexistante" & sous_tableau$date_ref == "Existante"] <- "Apparition"
  sous_tableau$evol_situation[sous_tableau$situation_avant == "Inexistante" & sous_tableau$date_ref == "Inexistante"] <- "Inexistante"
  table(sous_tableau$evol_situation)

  # On indique, pour chaque modalité, le nombre de communes concernées
  noms_modalites <- c(paste0("Apparition (", sum(sous_tableau$evol_situation == "Apparition"),")"), paste0("Disparition (", sum(sous_tableau$evol_situation == "Disparition"),")"))
  sous_tableau$pr_carto[sous_tableau$evol_situation == "Apparition"] <- noms_modalites[1]
  sous_tableau$pr_carto[sous_tableau$evol_situation == "Disparition"] <- noms_modalites[2]
  table(sous_tableau$pr_carto)
  
  
plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
  
  typoLayer(sous_tableau, var = "pr_carto",
            colNA = NA, legend.nodata = "Autres communes :\nstables",
            add=TRUE,
            legend.values.order = noms_modalites,
            col = c("red", "blue"),
            legend.pos = "topleft", 
            legend.title.txt = "Situation des communes\nconnaissant un changement"
            )
  
    layoutLayer(title = paste0("Les communes connaissant un changement entre ", annee_preced, " et ", annee), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini.", scale = NULL,
              author = "G. Bideau", frame ="", col = NA)
    

  
}

# Situation de la Côte d’Or très particulière, qui interroge beaucoup. Donc quelques tests à part pour voir ce que ça donne.
test <- subset (cassini, cassini$departement_1795 == "Côte d'Or")

table(test$pop_1820_info)
table(test$pop_1831_info)
table(test$pop_1836_info)
# Bilan : *a priori*, le fait que ce départemente ressorte beaucoup est bien lié aux données de la base, pas à une erreur de manipulation.

4 ÉTUDE PAR DÉPARTEMENTS

4.1 Réalisation d’un graphique par département

4.1.1 Graphique chaque département

liste_dep <- sort(unique (cassini$departement_1999))

num_dep <- 21

# Création d'un tableau pour accueillir les données de l'ensemble des départements
evol_deps <- data.frame()

for (num_dep in liste_dep) {
  
cassini_reduite <- subset(cassini, departement_1999 == num_dep)
nom_dep <- dep$LIBELLE[dep$CODE_DEPT == num_dep]


evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite

# label <- labels_data_pop[2]

# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
  annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
  sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
  # sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
  nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
  pop_annee_dep <- sum(as.numeric(sous_tableau_reduit[, paste0("pop_", annee, "_val")]), na.rm=TRUE)
  i_reduit <- c(annee, nbr_com_reduit, pop_annee_dep) # On compile les résultats totaux
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}

# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011) 
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus", "P09_POP")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1

i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus), sum(CODGEO_2021_reduit$P09_POP))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)


# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)), NA)

evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)

colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com", "population")

evol_nbr_com <- evol_nbr_com_reduit

# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
# Est désormais fait plus haut
# evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795 
# evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800

evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
evol_nbr_com[,3] <- as.numeric(evol_nbr_com[,3]) # Si on veut faire une seule colonne


# Calcul de l'évolution en valeur absolue du nombre de commune dans le département
evol_nbr_com$evol <- evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)

# Calcul du taux d'évolution
evol_nbr_com$tx_evol <- round(100 * (evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)) / lag(evol_nbr_com$nbr_com), 2)

# On compile les résultats du département en question
departement <- c(nom_dep, num_dep, evol_nbr_com$nbr_com, evol_nbr_com$population, evol_nbr_com$evol, evol_nbr_com$tx_evol)
# On ajoute ces résultats dans le tableau global
evol_deps <- rbind (evol_deps, departement, stringsAsFactors = FALSE)

# ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
#   geom_line() +
#   scale_x_continuous (breaks = seq(1780, 2030, 20)) +
#   labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

graphique <- ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
  geom_line() +
  ylim(0, max(evol_nbr_com$nbr_com)+50) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) +
  labs(title= paste0("Évolution du nombre de communes en ", nom_dep, " (", num_dep, ")"), subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

print(graphique)

# Pour avoir un graphique plus complet, on change la forme des données
pr_graph <- melt(evol_nbr_com, id.vars = "annees")
  

ggplot(data=pr_graph, aes(x=annees, y = value)) +
  geom_line(aes(color = variable, linetype = variable)) +
  # ylim(min(evol_nbr_com$evol), max(evol_nbr_com$nbr_com)+50) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) + 
  scale_linetype(name = "Évolution", labels = c("Nombre de communes", "Différence entre recensements", "Taux d'évolution entre recensements")) +
  scale_color_discrete(name = "Évolution", labels = c("Nombre de communes", "Différence entre recensements", "Taux d'évolution entre recensements")) +
  labs(title= paste0("Communes par départements : ", nom_dep, " (", num_dep, ")"), subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

rm(label, annee, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021_reduit, CODGEO_2021_reduit, i_2011_reduit, graphique)

}

# Création d'une colonne identifiant les deux recensements en jeu dans les évolutions
evol_nbr_com$ident_evol <- paste0("evol_", lag(evol_nbr_com$annees), "_", evol_nbr_com$annees)

# On identifie les colonnes du tableau regroupant les données de tous les départements
colnames(evol_deps) <- c("Département", "CODE_DEPT", evol_nbr_com$annees, paste0("pop_", evol_nbr_com$annees), evol_nbr_com$ident_evol, paste0("tx_", evol_nbr_com$ident_evol))

# print (evol_deps)
evol_deps_affichage <- evol_deps
colnames(evol_deps_affichage) <- c("Département", "N° Département", evol_nbr_com$annees, paste0("pop_", evol_nbr_com$annees), evol_nbr_com$ident_evol, paste0("tx_", evol_nbr_com$ident_evol))

nbr_col <- length(labels_data_pop) + 2

kable(evol_deps_affichage, row.names = F, digits = 2, align = "c",
      caption = "Évolution des communes par départements (à la géographie 1999)") %>%
  kableExtra::add_header_above(c(" " = 2, "Nombre de communes" = nbr_col, "Population" = nbr_col, "Évolution en valeur absolue" = nbr_col, "Taux d'évolution entre chaque recensement" = nbr_col))
Évolution des communes par départements (à la géographie 1999)
Nombre de communes
Population
Évolution en valeur absolue
Taux d’évolution entre chaque recensement
Département N° Département 1800 1806 1820 1831 1836 1841 1846 1851 1856 1861 1866 1872 1876 1881 1886 1891 1896 1901 1906 1911 1921 1926 1931 1936 1946 1954 1962 1968 1975 1982 1990 1999 2011 2021 pop_1800 pop_1806 pop_1820 pop_1831 pop_1836 pop_1841 pop_1846 pop_1851 pop_1856 pop_1861 pop_1866 pop_1872 pop_1876 pop_1881 pop_1886 pop_1891 pop_1896 pop_1901 pop_1906 pop_1911 pop_1921 pop_1926 pop_1931 pop_1936 pop_1946 pop_1954 pop_1962 pop_1968 pop_1975 pop_1982 pop_1990 pop_1999 pop_2011 pop_2021 evol_NA_1800 evol_1800_1806 evol_1806_1820 evol_1820_1831 evol_1831_1836 evol_1836_1841 evol_1841_1846 evol_1846_1851 evol_1851_1856 evol_1856_1861 evol_1861_1866 evol_1866_1872 evol_1872_1876 evol_1876_1881 evol_1881_1886 evol_1886_1891 evol_1891_1896 evol_1896_1901 evol_1901_1906 evol_1906_1911 evol_1911_1921 evol_1921_1926 evol_1926_1931 evol_1931_1936 evol_1936_1946 evol_1946_1954 evol_1954_1962 evol_1962_1968 evol_1968_1975 evol_1975_1982 evol_1982_1990 evol_1990_1999 evol_1999_2011 evol_2011_2021 tx_evol_NA_1800 tx_evol_1800_1806 tx_evol_1806_1820 tx_evol_1820_1831 tx_evol_1831_1836 tx_evol_1836_1841 tx_evol_1841_1846 tx_evol_1846_1851 tx_evol_1851_1856 tx_evol_1856_1861 tx_evol_1861_1866 tx_evol_1866_1872 tx_evol_1872_1876 tx_evol_1876_1881 tx_evol_1881_1886 tx_evol_1886_1891 tx_evol_1891_1896 tx_evol_1896_1901 tx_evol_1901_1906 tx_evol_1906_1911 tx_evol_1911_1921 tx_evol_1921_1926 tx_evol_1926_1931 tx_evol_1931_1936 tx_evol_1936_1946 tx_evol_1946_1954 tx_evol_1954_1962 tx_evol_1962_1968 tx_evol_1968_1975 tx_evol_1975_1982 tx_evol_1982_1990 tx_evol_1990_1999 tx_evol_1999_2011 tx_evol_2011_2021
Ain 01 433 435 433 435 437 436 440 440 441 444 444 447 447 447 447 447 447 449 449 450 450 450 450 450 449 449 449 443 419 419 419 419 421 395 299013 319495 325294 341792 342224 351655 360092 368718 360474 359154 360949 351004 357621 356260 356472 350157 344870 342533 338082 334649 308736 309015 311983 304486 298162 300970 314464 339262 376477 418516 471019 515270 592656 NA NA 2 -2 2 2 -1 4 0 1 3 0 3 0 0 0 0 0 2 0 1 0 0 0 0 -1 0 0 -6 -24 0 0 0 2 -26 NA 0.46 -0.46 0.46 0.46 -0.23 0.92 0 0.23 0.68 0 0.68 0 0 0 0 0 0.45 0 0.22 0 0 0 0 -0.22 0 0 -1.34 -5.42 0 0 0 0.48 -6.18
Aisne 02 853 853 850 837 839 839 837 836 836 835 836 836 836 837 839 839 840 840 840 840 838 833 833 833 833 833 832 830 819 817 817 816 817 801 425728 442633 459305 512772 526931 541727 556998 558887 545659 560821 564278 552032 559340 556376 555541 545039 541169 535169 534106 529881 421040 488723 489081 484378 453169 486808 512645 526080 533862 533970 537259 535842 541285 NA NA 0 -3 -13 2 0 -2 -1 0 -1 1 0 0 1 2 0 1 0 0 0 -2 -5 0 0 0 0 -1 -2 -11 -2 0 -1 1 -16 NA 0 -0.35 -1.53 0.24 0 -0.24 -0.12 0 -0.12 0.12 0 0 0.12 0.24 0 0.12 0 0 0 -0.24 -0.6 0 0 0 0 -0.12 -0.24 -1.33 -0.24 0 -0.12 0.12 -1.96
Allier 03 347 345 338 328 322 316 316 317 317 317 317 317 317 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 320 320 320 320 321 318 248864 260266 276582 298750 309270 311361 329540 336758 352241 356432 376164 390812 405783 416759 424582 424382 424378 422024 417961 406291 370950 370562 373924 368778 373481 372689 380221 386533 378406 369580 357710 344721 343780 NA NA -2 -7 -10 -6 -6 0 1 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 -3 NA -0.58 -2.03 -2.96 -1.83 -1.86 0 0.32 0 0 0 0 0 1.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.31 0 0 0 0.31 -0.93
Alpes-de-Haute-Provence 04 261 260 258 257 257 256 255 255 254 251 251 251 251 251 251 250 250 250 250 248 248 247 247 245 243 243 238 237 199 200 200 200 200 198 119048 145912 149310 155596 159053 156155 156677 152087 149670 146368 143000 139332 136166 131899 129494 124285 118142 115021 113126 107231 91882 88347 87893 85090 83354 84335 91843 104813 112178 119068 130883 139561 159450 NA NA -1 -2 -1 0 -1 -1 0 -1 -3 0 0 0 0 0 -1 0 0 0 -2 0 -1 0 -2 -2 0 -5 -1 -38 1 0 0 0 -2 NA -0.38 -0.77 -0.39 0 -0.39 -0.39 0 -0.39 -1.18 0 0 0 0 0 -0.4 0 0 0 -0.8 0 -0.4 0 -0.81 -0.82 0 -2.06 -0.42 -16.03 0.5 0 0 0 -1
Hautes-Alpes 05 189 189 189 189 189 189 189 189 189 189 189 189 189 189 189 188 187 187 186 186 186 186 186 184 182 181 181 179 175 175 177 177 178 163 113527 125844 121418 129102 131162 132580 132888 131805 129556 125100 122117 118897 119094 121787 122924 115522 113229 109510 107498 105083 89275 87963 87566 88210 84932 85067 87436 91790 97358 105070 113300 121419 135978 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 0 0 -2 -2 -1 0 -2 -4 0 2 0 1 -15 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.53 -0.53 0 -0.53 0 0 0 0 -1.08 -1.09 -0.55 0 -1.1 -2.23 0 1.14 0 0.56 -8.43
Alpes-Maritimes 06 150 150 147 149 150 148 149 148 147 146 146 150 152 152 152 153 153 153 155 159 159 160 161 161 163 163 163 163 163 163 163 163 163 163 134854 140873 154304 65495 176302 63234 183578 67751 184047 194776 197502 199597 203604 226621 238057 258571 265155 293213 334007 356338 357759 435253 493376 513714 452546 515484 618265 722070 816681 881198 971829 1011326 1079100 NA NA 0 -3 2 1 -2 1 -1 -1 -1 0 4 2 0 0 1 0 0 2 4 0 1 1 0 2 0 0 0 0 0 0 0 0 0 NA 0 -2 1.36 0.67 -1.33 0.68 -0.67 -0.68 -0.68 0 2.74 1.33 0 0 0.66 0 0 1.31 2.58 0 0.63 0.62 0 1.24 0 0 0 0 0 0 0 0 0
Ardèche 07 335 335 335 328 330 331 333 334 338 339 339 339 339 339 339 339 339 340 342 345 347 348 349 349 349 349 349 349 342 338 339 339 339 335 266656 290833 304289 340527 350828 364427 379677 385963 385357 388929 387193 380175 384378 376907 375472 371269 363501 353564 347140 331801 294308 289263 282911 272698 254598 249077 248516 256927 257065 267970 277581 286023 313578 NA NA 0 0 -7 2 1 2 1 4 1 0 0 0 0 0 0 0 1 2 3 2 1 1 0 0 0 0 0 -7 -4 1 0 0 -4 NA 0 0 -2.09 0.61 0.3 0.6 0.3 1.2 0.3 0 0 0 0 0 0 0 0.29 0.59 0.88 0.58 0.29 0.29 0 0 0 0 0 -2.01 -1.17 0.3 0 0 -1.18
Ardennes 08 539 540 538 478 477 478 478 477 478 478 478 500 502 502 503 503 503 503 503 503 503 503 503 503 503 503 502 485 459 459 462 463 463 449 236227 251166 266991 289941 306150 318970 326367 330137 0 0 325303 318828 326782 333675 332759 324923 318865 315589 317505 318896 277811 297448 293746 288632 245335 280490 300245 309378 309306 302338 296357 290130 283296 NA NA 1 -2 -60 -1 1 0 -1 1 0 0 22 2 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 -17 -26 0 3 1 0 -14 NA 0.19 -0.37 -11.15 -0.21 0.21 0 -0.21 0.21 0 0 4.6 0.4 0 0.2 0 0 0 0 0 0 0 0 0 0 0 -0.2 -3.39 -5.36 0 0.65 0.22 0 -3.02
Ariège 09 336 336 336 334 335 335 334 336 335 335 334 335 335 335 335 336 337 337 337 337 337 337 340 340 340 341 341 339 331 331 331 331 332 327 194216 221163 233015 251803 258545 262448 268448 265592 249608 250171 248804 244605 243100 238855 234806 225882 218096 208024 204204 197101 171288 166168 159927 153822 144455 138588 135564 136790 136295 134247 134966 135764 150943 NA NA 0 0 -2 1 0 -1 2 -1 0 -1 1 0 0 0 1 1 0 0 0 0 0 3 0 0 1 0 -2 -8 0 0 0 1 -5 NA 0 0 -0.6 0.3 0 -0.3 0.6 -0.3 0 -0.3 0.3 0 0 0 0.3 0.3 0 0 0 0 0 0.89 0 0 0.29 0 -0.59 -2.36 0 0 0 0.3 -1.51
Aube 10 452 451 451 447 446 446 446 447 446 446 446 446 446 446 446 446 446 446 446 445 445 445 445 445 445 445 445 443 430 430 431 431 433 431 231838 238819 230688 246518 253641 258013 261355 264642 261631 262590 261458 255132 255217 255326 257374 255548 251435 246163 243670 240755 227839 238253 242596 239563 235237 240797 255099 270325 284823 289300 289207 292131 303298 NA NA -1 0 -4 -1 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -2 -13 0 1 0 2 -2 NA -0.22 0 -0.89 -0.22 0 0 0.22 -0.22 0 0 0 0 0 0 0 0 0 0 -0.22 0 0 0 0 0 0 0 -0.45 -2.93 0 0.23 0 0.46 -0.46
Aude 11 434 433 434 434 433 433 434 434 434 434 435 436 436 437 437 437 439 439 439 440 440 440 440 441 441 441 441 439 437 437 438 438 438 433 225228 240993 252874 273733 285419 280849 287250 290125 282786 283460 288709 286613 300065 327988 332080 317372 310513 313531 308327 300537 287052 291951 296880 285115 268889 268254 269782 278323 272366 280686 298712 309770 353980 NA NA -1 1 0 -1 0 1 0 0 0 1 1 0 1 0 0 2 0 0 1 0 0 0 1 0 0 0 -2 -2 0 1 0 0 -5 NA -0.23 0.23 0 -0.23 0 0.23 0 0 0 0.23 0.23 0 0.23 0 0 0.46 0 0 0.23 0 0 0 0.23 0 0 0 -0.45 -0.46 0 0.23 0 0 -1.14
Aveyron 12 529 184 194 218 241 259 274 281 282 282 285 289 295 301 302 302 302 302 304 306 306 306 306 306 306 307 307 306 304 304 304 304 306 287 313010 331373 339422 358502 364781 372465 385703 391129 391250 395903 399295 399813 413826 415075 415826 400467 389464 382074 377289 369448 332940 328886 323782 314682 307717 292727 290489 281568 278306 278654 270141 263808 277240 NA NA -345 10 24 23 18 15 7 1 0 3 4 6 6 1 0 0 0 2 2 0 0 0 0 0 1 0 -1 -2 0 0 0 2 -19 NA -65.22 5.43 12.37 10.55 7.47 5.79 2.55 0.36 0 1.06 1.4 2.08 2.03 0.33 0 0 0 0.66 0.66 0 0 0 0 0 0.33 0 -0.33 -0.65 0 0 0 0.66 -6.21
Bouches-du-Rhône 13 109 109 106 105 106 106 106 106 106 106 107 108 108 109 109 109 109 110 111 111 111 114 114 116 117 118 118 119 119 119 119 119 119 119 285012 293236 313612 358742 361632 374673 413918 428892 473365 507113 547903 554902 556379 589028 604857 630622 673820 734347 765918 805539 841996 929549 1101672 1224802 971935 1048762 1248355 1470271 1632974 1724199 1759381 1831009 1967299 NA NA 0 -3 -1 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 3 0 2 1 1 0 1 0 0 0 0 0 0 NA 0 -2.75 -0.94 0.95 0 0 0 0 0 0.94 0.93 0 0.93 0 0 0 0.92 0.91 0 0 2.7 0 1.75 0.86 0.85 0 0.85 0 0 0 0 0 0
Calvados 14 896 896 890 832 810 792 791 784 784 765 765 764 750 763 763 763 763 763 763 763 763 763 763 763 763 760 754 749 704 704 705 705 709 530 451062 505238 492407 494516 488474 495855 498181 491210 478397 480992 474909 454012 442284 439830 437267 428945 417176 410179 403431 396318 384730 390492 401356 404901 400026 442688 480757 519695 560967 589559 618478 648385 682868 NA NA 0 -6 -58 -22 -18 -1 -7 0 -19 0 -1 -14 13 0 0 0 0 0 0 0 0 0 0 0 -3 -6 -5 -45 0 1 0 4 -179 NA 0 -0.67 -6.52 -2.64 -2.22 -0.13 -0.88 0 -2.42 0 -0.13 -1.83 1.73 0 0 0 0 0 0 0 0 0 0 0 -0.39 -0.79 -0.66 -6.01 0 0.14 0 0.57 -25.25
Cantal 15 269 269 269 260 256 257 258 259 259 259 260 264 266 267 267 267 267 267 267 267 267 267 267 267 268 269 269 268 258 259 260 260 261 247 219810 250864 251448 257585 261364 255734 258733 253253 246518 239399 238009 232903 231086 236190 241742 239601 234382 230511 228690 223361 199402 196999 193505 190888 186843 177065 172977 169330 166549 162838 158723 150778 148581 NA NA 0 0 -9 -4 1 1 1 0 0 1 4 2 1 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 -10 1 1 0 1 -14 NA 0 0 -3.35 -1.54 0.39 0.39 0.39 0 0 0.39 1.54 0.76 0.38 0 0 0 0 0 0 0 0 0 0 0.37 0.37 0 -0.37 -3.73 0.39 0.39 0 0.38 -5.36
Charente 16 454 453 453 452 456 439 434 434 431 427 427 426 426 426 426 426 426 426 426 426 426 426 426 425 424 424 424 423 405 405 405 404 404 365 320118 326680 347299 361288 0 367893 379031 382912 378721 379081 378218 367520 373950 370742 366408 360259 356236 350305 351733 347061 316369 312790 310489 309279 311137 313635 327658 331016 337064 340770 341993 339628 351563 NA NA -1 0 -1 4 -17 -5 0 -3 -4 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 -18 0 0 -1 0 -39 NA -0.22 0 -0.22 0.88 -3.73 -1.14 0 -0.69 -0.93 0 -0.23 0 0 0 0 0 0 0 0 0 0 0 -0.23 -0.24 0 0 -0.24 -4.26 0 0 -0.25 0 -9.65
Charente-Maritime 17 506 506 505 481 480 480 480 480 480 479 479 479 481 480 480 480 480 480 481 482 482 482 483 483 483 486 486 484 472 472 472 472 474 465 399162 393039 409478 445291 449753 457694 467048 469439 474858 480350 479486 466051 465628 466416 462803 456202 453455 452149 453793 450871 418310 417789 415249 419021 416187 447973 470897 483622 497859 513220 527146 557024 616887 NA NA 0 -1 -24 -1 0 0 0 0 -1 0 0 2 -1 0 0 0 0 1 1 0 0 1 0 0 3 0 -2 -12 0 0 0 2 -9 NA 0 -0.2 -4.75 -0.21 0 0 0 0 -0.21 0 0 0.42 -0.21 0 0 0 0 0.21 0.21 0 0 0.21 0 0 0.62 0 -0.41 -2.48 0 0 0 0.42 -1.9
Cher 18 304 304 304 297 297 293 291 291 290 290 291 291 291 291 291 292 292 292 292 293 293 293 293 293 290 290 290 290 290 290 290 290 290 287 217785 229247 239561 256247 276856 273947 294726 306959 314917 323444 336601 335372 345613 351405 355349 359276 347725 345543 343484 337810 304800 298398 293918 288695 286070 284376 293514 304601 316350 320174 321559 314428 311022 NA NA 0 0 -7 0 -4 -2 0 -1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 -3 0 0 0 0 0 0 0 0 -3 NA 0 0 -2.3 0 -1.35 -0.68 0 -0.34 0 0.34 0 0 0 0 0.34 0 0 0 0.34 0 0 0 0 -1.02 0 0 0 0 0 0 0 0 -1.03
Corrèze 19 294 293 294 291 292 290 286 286 286 286 286 286 287 287 287 287 287 288 289 289 289 289 289 289 289 289 289 289 285 286 286 286 287 281 243654 254271 273378 293853 302478 304958 315974 320865 314986 310118 310843 301828 310485 316820 326494 328119 322393 318422 317430 309646 273808 269289 264129 262770 254574 242798 237926 237858 240363 241448 237908 232576 245385 NA NA -1 1 -3 1 -2 -4 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -4 1 0 0 1 -6 NA -0.34 0.34 -1.02 0.34 -0.68 -1.38 0 0 0 0 0 0.35 0 0 0 0 0.35 0.35 0 0 0 0 0 0 0 0 0 -1.38 0.35 0 0 0.35 -2.09
Côte-d’Or 21 728 730 727 486 727 727 728 727 727 717 717 717 717 717 717 717 717 717 717 717 717 717 717 717 717 717 717 716 705 707 707 707 706 698 339562 355436 358148 252301 385073 383564 389799 399611 384416 383335 381624 373406 377663 382819 381574 376866 368168 361626 357959 350044 321088 328881 333800 334386 335602 356839 387869 421192 456070 473548 493866 506755 524144 NA NA 2 -3 -241 241 0 1 -1 0 -10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -11 2 0 0 -1 -8 NA 0.27 -0.41 -33.15 49.59 0 0.14 -0.14 0 -1.38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.14 -1.54 0.28 0 0 -0.14 -1.13
Côtes-d’Armor 22 378 378 377 375 375 375 375 377 378 382 384 388 388 388 388 388 389 389 389 389 389 389 389 390 390 390 384 384 368 368 371 371 373 348 504021 519382 552015 598909 604356 607531 628645 629042 621271 628615 644460 622487 630591 627241 627914 618317 615763 609027 611220 605238 557590 552549 539293 531612 526745 502975 501735 505890 525394 538724 538249 542213 587519 NA NA 0 -1 -2 0 0 0 2 1 4 2 4 0 0 0 0 1 0 0 0 0 0 0 1 0 0 -6 0 -16 0 3 0 2 -25 NA 0 -0.26 -0.53 0 0 0 0.53 0.27 1.06 0.52 1.04 0 0 0 0 0.26 0 0 0 0 0 0 0.26 0 0 -1.54 0 -4.17 0 0.82 0 0.54 -6.7
Creuse 23 295 296 292 282 269 265 262 261 261 261 261 263 263 264 266 266 266 266 266 266 266 266 266 266 266 266 266 264 260 260 260 260 261 257 218041 226224 248785 265640 276164 278418 285720 287181 278869 270055 274167 274663 278423 278782 284942 284660 279366 277831 274094 266188 228244 219148 207882 201844 188669 172702 163515 156876 146214 139968 131349 124470 124000 NA NA 1 -4 -10 -13 -4 -3 -1 0 0 0 2 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 -2 -4 0 0 0 1 -4 NA 0.34 -1.35 -3.42 -4.61 -1.49 -1.13 -0.38 0 0 0 0.77 0 0.38 0.76 0 0 0 0 0 0 0 0 0 0 0 0 -0.75 -1.52 0 0 0 0.38 -1.53
Dordogne 24 641 639 635 584 583 583 584 585 584 582 582 582 582 583 583 585 585 585 587 587 587 587 587 587 587 587 580 575 555 556 557 557 559 507 409800 423911 453136 482654 487560 489822 501331 505087 504600 501029 500543 477389 489848 495037 492205 478471 464822 452951 447152 437432 396742 392489 383720 386963 387643 377870 375455 374073 373179 377356 386365 388293 413181 NA NA -2 -4 -51 -1 0 1 1 -1 -2 0 0 0 1 0 2 0 0 2 0 0 0 0 0 0 0 -7 -5 -20 1 1 0 2 -52 NA -0.31 -0.63 -8.03 -0.17 0 0.17 0.17 -0.17 -0.34 0 0 0 0.17 0 0.34 0 0 0.34 0 0 0 0 0 0 0 -1.19 -0.86 -3.48 0.18 0.18 0 0.36 -9.3
Doubs 25 658 653 648 640 641 641 641 641 641 640 640 638 639 639 639 639 638 638 638 637 637 637 637 637 637 637 636 636 594 592 594 594 594 573 230694 240783 242782 265696 276609 286416 292507 296813 287002 296385 298249 291302 306211 310915 311076 303176 302143 298973 298537 300039 285106 296678 305591 304915 298355 327280 384979 426469 471082 477163 484770 499062 525276 NA NA -5 -5 -8 1 0 0 0 0 -1 0 -2 1 0 0 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 -42 -2 2 0 0 -21 NA -0.76 -0.77 -1.23 0.16 0 0 0 0 -0.16 0 -0.31 0.16 0 0 0 -0.16 0 0 -0.16 0 0 0 0 0 0 -0.16 0 -6.6 -0.34 0.34 0 0 -3.54
Drôme 26 361 359 359 359 359 360 362 362 365 366 367 370 372 376 379 379 379 379 379 378 378 378 378 378 379 381 382 381 372 371 371 370 369 364 235106 253372 273511 299639 305501 311544 320106 326314 324536 327014 324227 321053 321750 313763 314615 306419 303491 297321 297270 290894 263509 263750 267080 267281 268233 275290 304227 342891 361847 389781 414072 437778 482984 NA NA -2 0 0 0 1 2 0 3 1 1 3 2 4 3 0 0 0 0 -1 0 0 0 0 1 2 1 -1 -9 -1 0 -1 -1 -5 NA -0.55 0 0 0 0.28 0.56 0 0.83 0.27 0.27 0.82 0.54 1.08 0.8 0 0 0 0 -0.26 0 0 0 0 0.26 0.53 0.26 -0.26 -2.36 -0.27 0 -0.27 -0.27 -1.36
Eure 27 842 841 804 798 794 791 703 704 701 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 698 699 699 688 676 676 676 675 675 585 402769 421460 416124 424135 424292 424780 423540 415777 404665 398670 394467 377974 373649 364291 358829 349471 340652 334691 330140 323763 303159 308445 305788 303829 315902 332514 361943 383385 422952 462323 513818 541054 582822 NA NA -1 -37 -6 -4 -3 -88 1 -3 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 1 0 -11 -12 0 0 -1 0 -90 NA -0.12 -4.4 -0.75 -0.5 -0.38 -11.13 0.14 -0.43 -0.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.29 0.14 0 -1.57 -1.74 0 0 -0.15 0 -13.33
Eure-et-Loir 28 460 460 460 450 439 435 431 428 426 425 425 425 425 425 425 425 425 425 425 425 425 425 425 425 425 425 424 424 401 402 403 403 403 365 257703 265937 264444 278817 284992 286309 292102 294640 290822 290024 290519 282451 282830 279877 283491 284452 280226 275194 273584 272037 251065 254997 254603 252508 257919 260851 277375 302047 335151 362813 396073 407665 425502 NA NA 0 0 -10 -11 -4 -4 -3 -2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -23 1 1 0 0 -38 NA 0 0 -2.17 -2.44 -0.91 -0.92 -0.7 -0.47 -0.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.24 0 -5.42 0.25 0.25 0 0 -9.43
Finistère 29 290 287 285 282 282 283 283 284 284 284 284 284 287 290 291 291 294 296 296 296 298 299 299 301 295 295 288 286 283 283 283 283 283 277 456707 453307 483512 523886 546815 576586 602717 617618 607817 623936 662227 642545 666066 681234 707820 727012 739648 773014 795103 809771 762514 753702 744295 756793 728244 727847 749558 768929 804088 828364 838687 852418 893914 NA NA -3 -2 -3 0 1 0 1 0 0 0 0 3 3 1 0 3 2 0 0 2 1 0 2 -6 0 -7 -2 -3 0 0 0 0 -6 NA -1.03 -0.7 -1.05 0 0.35 0 0.35 0 0 0 0 1.06 1.05 0.34 0 1.03 0.68 0 0 0.68 0.34 0 0.67 -1.99 0 -2.37 -0.69 -1.05 0 0 0 0 -2.12
Gard 30 364 364 343 342 344 345 347 348 348 348 347 348 348 349 349 349 349 349 350 350 350 352 352 352 354 354 354 354 352 352 352 352 352 350 300274 322144 334164 357389 365678 375554 400151 406731 416833 422499 427407 413233 423804 414584 416039 418201 414776 419557 419875 412182 394865 401253 405353 393566 379156 394765 432744 475190 490612 526326 579796 617250 693888 NA NA 0 -21 -1 2 1 2 1 0 0 -1 1 0 1 0 0 0 0 1 0 0 2 0 0 2 0 0 0 -2 0 0 0 0 -2 NA 0 -5.77 -0.29 0.58 0.29 0.58 0.29 0 0 -0.29 0.29 0 0.29 0 0 0 0 0.29 0 0 0.57 0 0 0.57 0 0 0 -0.56 0 0 0 0 -0.57
Haute-Garonne 31 611 609 606 603 596 590 580 577 578 578 584 584 585 587 587 587 587 588 588 589 589 589 589 589 589 591 593 592 588 587 588 588 589 586 343883 367524 391074 426412 453978 468411 481938 481915 480837 484141 493804 478230 477730 478009 481169 472383 459377 448481 442065 432126 424582 431505 441799 458647 512260 525669 594633 690712 777431 824501 925962 1046338 1230819.99602 NA NA -2 -3 -3 -7 -6 -10 -3 1 0 6 0 1 2 0 0 0 1 0 1 0 0 0 0 0 2 2 -1 -4 -1 1 0 1 -3 NA -0.33 -0.49 -0.5 -1.16 -1.01 -1.69 -0.52 0.17 0 1.04 0 0.17 0.34 0 0 0 0.17 0 0.17 0 0 0 0 0 0.34 0.34 -0.17 -0.68 -0.17 0.17 0 0.17 -0.51
Gers 32 684 681 681 503 486 466 466 467 466 466 465 465 465 465 465 465 466 466 466 466 466 466 466 466 466 467 467 466 462 462 462 463 464 462 261740 284432 299404 309861 0 309796 313189 307479 304497 298931 295692 284717 283537 281532 274391 261084 250472 238448 231088 221994 194406 196419 193134 192451 190436 185111 182263 181576 175366 174154 174587 172335 193456 NA NA -3 0 -178 -17 -20 0 1 -1 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 -4 0 0 1 1 -2 NA -0.44 0 -26.14 -3.38 -4.12 0 0.21 -0.21 0 -0.21 0 0 0 0 0 0.22 0 0 0 0 0 0 0 0 0.21 0 -0.21 -0.86 0 0 0.22 0.22 -0.43
Gironde 33 567 561 542 543 544 544 544 546 546 547 549 551 552 552 552 553 554 554 554 554 554 554 554 554 555 555 555 548 543 543 542 542 542 535 502988 514482 522253 554170 555786 568034 602444 614387 640757 667193 701855 705149 735242 748703 775845 793528 809902 821131 823925 829095 819128 827973 852768 850567 858381 896517 935448 1009390 1061480 1127546 1213499 1287334 1434661 NA NA -6 -19 1 1 0 0 2 0 1 2 2 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 -7 -5 0 -1 0 0 -7 NA -1.06 -3.39 0.18 0.18 0 0 0.37 0 0.18 0.37 0.36 0.18 0 0 0.18 0.18 0 0 0 0 0 0 0 0.18 0 0 -1.26 -0.91 0 -0.18 0 0 -1.29
Hérault 34 333 333 332 332 327 326 328 330 330 331 332 335 336 336 338 338 338 340 340 341 342 342 343 343 343 343 343 342 343 343 343 343 343 342 275413 301101 324126 346454 356722 366173 384610 387664 399276 409487 418295 428729 445053 441527 439044 461651 469684 489421 482779 480484 488215 500575 514819 502043 461100 471429 516658 591397 648202 706499 794603 896441 1031974 NA NA 0 -1 0 -5 -1 2 2 0 1 1 3 1 0 2 0 0 2 0 1 1 0 1 0 0 0 0 -1 1 0 0 0 0 -1 NA 0 -0.3 0 -1.51 -0.31 0.61 0.61 0 0.3 0.3 0.9 0.3 0 0.6 0 0 0.59 0 0.29 0.29 0 0.29 0 0 0 0 -0.29 0.29 0 0 0 0 -0.29
Ille-et-Vilaine 35 351 350 350 349 349 347 348 350 350 350 350 352 353 357 357 359 359 360 360 360 360 360 360 361 361 362 362 359 353 352 353 352 354 332 488846 508334 533205 546835 547219 549217 562872 574972 580821 584257 593079 589681 602712 615480 621384 626875 622039 613567 611805 608098 558574 561688 562558 565766 578246 586812 614268 652722 702199 749764 798718 867533 981419 NA NA -1 0 -1 0 -2 1 2 0 0 0 2 1 4 0 2 0 1 0 0 0 0 0 1 0 1 0 -3 -6 -1 1 -1 2 -22 NA -0.28 0 -0.29 0 -0.57 0.29 0.57 0 0 0 0.57 0.28 1.13 0 0.56 0 0.28 0 0 0 0 0 0.28 0 0.28 0 -0.83 -1.67 -0.28 0.28 -0.28 0.57 -6.21
Indre 36 274 274 260 249 249 248 247 248 246 245 245 245 245 245 245 245 245 245 245 245 247 247 247 248 248 248 248 248 247 247 247 247 247 241 205628 204721 230373 245531 257350 253290 264315 271904 273479 270054 277858 277663 281248 287759 296147 292868 289206 288788 290216 287673 260535 255095 247912 245622 252075 247436 251432 247178 248523 243191 237510 231139 232268 NA NA 0 -14 -11 0 -1 -1 1 -2 -1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 -1 0 0 0 0 -6 NA 0 -5.11 -4.23 0 -0.4 -0.4 0.4 -0.81 -0.41 0 0 0 0 0 0 0 0 0 0 0.82 0 0 0.4 0 0 0 0 -0.4 0 0 0 0 -2.43
Indre-et-Loire 37 310 309 303 290 282 281 281 281 281 281 281 281 282 282 282 282 282 282 282 282 282 282 282 282 282 281 281 278 277 277 277 277 277 272 269036 275291 282172 297116 304274 306338 312420 315611 318438 323579 325025 317027 324875 329160 340921 337298 337064 335541 337916 341205 327743 334486 335226 343276 349675 364706 395210 437870 478601 506097 529345 554003 588420 NA NA -1 -6 -13 -8 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -3 -1 0 0 0 0 -5 NA -0.32 -1.94 -4.29 -2.76 -0.35 0 0 0 0 0 0 0.36 0 0 0 0 0 0 0 0 0 0 0 0 -0.35 0 -1.07 -0.36 0 0 0 0 -1.81
Isère 38 530 530 527 529 530 525 525 523 524 526 528 531 534 536 539 539 539 539 539 540 540 540 542 542 542 542 540 537 533 533 533 533 533 512 413117 447370 476498 521515 541516 553554 562570 566726 550214 550724 554249 550058 555190 555438 555845 547424 542919 544254 538308 531674 502033 529816 549739 540903 541899 587982 676823 767367 860339 936771 1016228 1094006 1197038 NA NA 0 -3 2 1 -5 0 -2 1 2 2 3 3 2 3 0 0 0 0 1 0 0 2 0 0 0 -2 -3 -4 0 0 0 0 -21 NA 0 -0.57 0.38 0.19 -0.94 0 -0.38 0.19 0.38 0.38 0.57 0.56 0.37 0.56 0 0 0 0 0.19 0 0 0.37 0 0 0 -0.37 -0.56 -0.74 0 0 0 0 -3.94
Jura 39 727 727 707 573 574 579 583 583 583 582 582 583 583 583 583 583 583 583 583 584 584 584 584 584 582 580 579 577 543 543 545 545 545 495 287988 300233 301551 312343 315187 316568 315990 313165 296583 297946 298375 287520 288721 285175 281179 272933 266046 261179 257626 252609 228978 230598 229018 220704 216286 220109 225584 233441 238856 242925 248759 250857 262388 NA NA 0 -20 -134 1 5 4 0 0 -1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 -2 -2 -1 -2 -34 0 2 0 0 -50 NA 0 -2.75 -18.95 0.17 0.87 0.69 0 0 -0.17 0 0.17 0 0 0 0 0 0 0 0.17 0 0 0 0 -0.34 -0.34 -0.17 -0.35 -5.89 0 0.37 0 0 -9.17
Landes 40 363 363 352 344 339 339 333 332 332 331 330 331 333 333 333 333 333 333 334 334 334 334 334 334 334 334 334 332 331 331 331 331 331 327 222293 232204 252718 277331 278921 282404 292157 295377 302793 300839 306693 299263 303508 301143 302266 297902 292884 291586 293467 288902 263937 258038 257186 251436 248395 248943 260495 277381 288323 297424 311461 327334 379341 NA NA 0 -11 -8 -5 0 -6 -1 0 -1 -1 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -2 -1 0 0 0 0 -4 NA 0 -3.03 -2.27 -1.45 0 -1.77 -0.3 0 -0.3 -0.3 0.3 0.6 0 0 0 0 0 0.3 0 0 0 0 0 0 0 0 -0.6 -0.3 0 0 0 0 -1.21
Loir-et-Cher 41 309 306 299 298 296 296 296 296 296 298 297 297 297 297 297 297 297 297 297 297 297 297 297 297 297 297 296 295 291 291 291 291 291 267 209966 213482 227527 235750 244083 249362 256383 261892 264043 269029 275757 268801 272634 275713 279214 280358 278153 275538 276019 271231 251528 248099 241592 240908 242419 239824 250741 267896 283686 296224 305937 314968 327868 NA NA -3 -7 -1 -2 0 0 0 0 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -4 0 0 0 0 -24 NA -0.97 -2.29 -0.33 -0.67 0 0 0 0 0.68 -0.34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.34 -0.34 -1.36 0 0 0 0 -8.25
Loire 42 326 326 326 320 320 318 321 321 317 320 323 327 329 330 331 332 333 333 335 336 337 338 338 338 338 339 331 327 327 327 327 327 327 323 290903 315858 343524 390847 412675 434723 453928 472620 505130 517604 537118 550985 590613 599836 603384 616227 625336 647633 643943 640549 637130 669216 664822 650223 631591 654482 696348 722443 742396 739521 746288 728524 746115 NA NA 0 0 -6 0 -2 3 0 -4 3 3 4 2 1 1 1 1 0 2 1 1 1 0 0 0 1 -8 -4 0 0 0 0 0 -4 NA 0 0 -1.84 0 -0.62 0.94 0 -1.25 0.95 0.94 1.24 0.61 0.3 0.3 0.3 0.3 0 0.6 0.3 0.3 0.3 0 0 0 0.3 -2.36 -1.21 0 0 0 0 0 -1.22
Haute-Loire 43 274 274 274 270 266 266 256 257 258 260 261 262 263 264 264 264 265 265 265 265 265 266 267 267 268 268 268 264 260 260 260 260 262 258 234736 268212 276830 291092 293190 298414 306743 304421 301342 305873 312937 308709 313723 316461 320063 316735 316699 314058 314770 303838 268910 260610 251608 245271 228076 215577 211036 208337 205491 205895 206568 209113 223438 NA NA 0 0 -4 -4 0 -10 1 1 2 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 -4 -4 0 0 0 2 -4 NA 0 0 -1.46 -1.48 0 -3.76 0.39 0.39 0.78 0.38 0.38 0.38 0.38 0 0 0.38 0 0 0 0 0.38 0.38 0 0.37 0 0 -1.49 -1.52 0 0 0 0.77 -1.53
Loire-Atlantique 44 209 209 208 207 206 206 206 206 208 208 213 215 217 217 217 217 217 218 219 218 219 220 220 220 222 223 224 224 221 221 221 221 223 208 369305 407827 432638 470093 0 486807 517381 535664 555996 580207 598598 602206 612970 625625 643884 645263 647172 664971 666748 669920 649691 651547 652079 659428 665064 733575 803372 861452 934499 995498 1052183 1134266 1269130 NA NA 0 -1 -1 -1 0 0 0 2 0 5 2 2 0 0 0 0 1 1 -1 1 1 0 0 2 1 1 0 -3 0 0 0 2 -15 NA 0 -0.48 -0.48 -0.48 0 0 0 0.97 0 2.4 0.94 0.93 0 0 0 0 0.46 0.46 -0.46 0.46 0.46 0 0 0.91 0.45 0.45 0 -1.34 0 0 0 0.9 -6.73
Loiret 45 363 363 357 348 348 348 348 348 348 349 349 349 349 349 349 349 349 349 349 349 349 349 349 349 349 349 349 348 334 334 334 334 334 325 286255 285395 291396 305432 313106 314547 330954 340138 343708 352737 357110 353021 360903 368526 374875 377718 371019 366660 364999 364061 337224 341225 342679 343865 346918 360523 389854 430629 490189 535669 580612 618126 653510 NA NA 0 -6 -9 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -14 0 0 0 0 -9 NA 0 -1.65 -2.52 0 0 0 0 0 0.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.29 -4.02 0 0 0 0 -2.69
Lot 46 355 303 302 300 300 307 310 314 315 315 318 321 323 323 324 325 327 327 329 329 330 331 334 335 337 340 340 340 340 340 340 340 342 315 262466 268351 275199 284475 287062 287348 291751 295916 293675 295455 288919 281404 276512 280269 271514 253885 240403 226720 216611 205769 176889 171776 166637 162572 154897 147754 149929 151198 150778 154533 155816 160197 175701 NA NA -52 -1 -2 0 7 3 4 1 0 3 3 2 0 1 1 2 0 2 0 1 1 3 1 2 3 0 0 0 0 0 0 2 -27 NA -14.65 -0.33 -0.66 0 2.33 0.98 1.29 0.32 0 0.95 0.94 0.62 0 0.31 0.31 0.62 0 0.61 0 0.3 0.3 0.91 0.3 0.6 0.89 0 0 0 0 0 0 0.59 -7.89
Lot-et-Garonne 47 383 383 383 354 354 312 312 312 315 316 318 318 325 326 326 326 326 326 326 326 326 326 326 327 328 328 328 326 311 314 317 317 319 319 300143 326226 330119 346885 346400 347073 346260 341345 340041 332065 327962 319289 316920 312081 307437 295360 286377 278740 274610 268083 239972 246609 247500 252761 265449 265549 275028 290592 292616 298522 305989 305380 329697 NA NA 0 0 -29 0 -42 0 0 3 1 2 0 7 1 0 0 0 0 0 0 0 0 0 1 1 0 0 -2 -15 3 3 0 2 0 NA 0 0 -7.57 0 -11.86 0 0 0.96 0.32 0.63 0 2.2 0.31 0 0 0 0 0 0 0 0 0 0.31 0.31 0 0 -0.61 -4.6 0.96 0.96 0 0.63 0
Lozère 48 192 192 191 189 193 193 194 193 193 193 193 194 196 197 197 198 198 198 198 198 198 198 198 198 198 198 197 194 185 185 185 185 184 151 126344 143247 133934 140460 141858 144233 159137 145574 141906 139089 137265 135081 138318 143566 141264 135527 132151 128866 128016 122738 108822 104733 101859 98480 90523 82391 81868 77258 74825 74294 72825 73509 76662 NA NA 0 -1 -2 4 0 1 -1 0 0 0 1 2 1 0 1 0 0 0 0 0 0 0 0 0 0 -1 -3 -9 0 0 0 -1 -33 NA 0 -0.52 -1.05 2.12 0 0.52 -0.52 0 0 0 0.52 1.03 0.51 0 0.51 0 0 0 0 0 0 0 0 0 0 -0.51 -1.52 -4.64 0 0 0 -0.54 -17.93
Maine-et-Loire 49 388 387 382 386 380 376 374 377 377 377 381 381 382 382 382 382 382 382 382 382 382 382 382 382 382 382 382 378 364 364 364 364 369 178 377539 405243 443469 468466 469348 487520 504029 515264 524714 523951 531710 518534 518029 524249 528458 519382 515632 515436 514228 508873 475490 478461 476694 478409 496786 519051 557074 585568 629849 675321 705882 732942 786406 NA NA -1 -5 4 -6 -4 -2 3 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -14 0 0 0 5 -191 NA -0.26 -1.29 1.05 -1.55 -1.05 -0.53 0.8 0 0 1.06 0 0.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.05 -3.7 0 0 0 1.37 -51.76
Manche 50 670 668 654 650 645 641 641 643 643 644 644 643 643 643 643 643 645 646 646 646 646 646 647 647 647 647 647 637 593 596 601 601 610 445 529069 581615 594406 591376 594319 597531 604252 600882 595202 591421 573674 544776 539910 526377 520865 513815 500052 490653 486739 475456 424873 430714 432814 437865 434833 446261 446329 451419 451191 465502 479217 481059 502356 NA NA -2 -14 -4 -5 -4 0 2 0 1 0 -1 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 -10 -44 3 5 0 9 -165 NA -0.3 -2.1 -0.61 -0.77 -0.62 0 0.31 0 0.16 0 -0.16 0 0 0 0 0.31 0.16 0 0 0 0 0.15 0 0 0 0 -1.55 -6.91 0.51 0.84 0 1.5 -27.05
Marne 51 694 693 692 691 683 683 676 673 668 666 664 664 664 663 661 660 660 660 661 661 661 661 661 661 661 653 653 634 621 618 619 619 622 614 304609 310695 309108 339716 344905 355785 363819 371743 364290 373768 379312 381170 407476 421498 429217 434459 439331 432674 433963 436115 366492 397596 411998 410045 386717 414899 441995 485175 530399 543627 558217 563735 568193 NA NA -1 -1 -1 -8 0 -7 -3 -5 -2 -2 0 0 -1 -2 -1 0 0 1 0 0 0 0 0 0 -8 0 -19 -13 -3 1 0 3 -8 NA -0.14 -0.14 -0.14 -1.16 0 -1.02 -0.44 -0.74 -0.3 -0.3 0 0 -0.15 -0.3 -0.15 0 0 0.15 0 0 0 0 0 0 -1.21 0 -2.91 -2.05 -0.48 0.16 0 0.48 -1.29
Haute-Marne 52 547 548 545 546 545 547 547 546 546 546 546 546 546 546 546 546 546 546 546 546 546 546 546 546 545 545 543 539 394 395 424 432 433 421 224753 235844 231374 249517 253384 255363 259836 266087 254432 256043 256734 248942 250888 253383 246303 242069 230723 225187 220505 213663 197942 194482 188930 187670 181073 196466 207777 213747 212314 210670 204067 194873 185214 NA NA 1 -3 1 -1 2 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -2 -4 -145 1 29 8 1 -12 NA 0.18 -0.55 0.18 -0.18 0.37 0 -0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.18 0 -0.37 -0.74 -26.9 0.25 7.34 1.89 0.23 -2.77
Mayenne 53 285 285 281 280 275 275 274 274 274 274 274 274 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 275 262 262 261 261 262 241 301968 328337 339973 353937 361764 361392 368439 374566 373841 375163 367855 350637 351933 344881 340063 332387 321187 313103 305457 297732 262447 259934 254479 251348 256317 251522 250030 252762 261789 271784 278037 285338 308273 NA NA 0 -4 -1 -5 0 -1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -13 0 -1 0 1 -21 NA 0 -1.4 -0.36 -1.79 0 -0.36 0 0 0 0 0 0.73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.36 -4.73 0 -0.38 0 0.38 -8.02
Meurthe-et-Moselle 54 630 626 582 582 590 594 596 596 596 597 597 597 597 598 597 597 597 599 599 601 601 601 601 601 600 600 600 600 588 588 594 594 594 591 280699 302838 310778 277520 348728 353769 303027 306157 304479 366949 58644 365363 404849 419514 431946 444389 466654 484934 517716 564932 503989 552261 592803 576219 528960 604190 678247 705554 722693 716964 711943 713779 731019 NA NA -4 -44 0 8 4 2 0 0 1 0 0 0 1 -1 0 0 2 0 2 0 0 0 0 -1 0 0 0 -12 0 6 0 0 -3 NA -0.63 -7.03 0 1.37 0.68 0.34 0 0 0.17 0 0 0 0.17 -0.17 0 0 0.34 0 0.33 0 0 0 0 -0.17 0 0 0 -2 0 1.02 0 0 -0.51
Meuse 55 589 589 587 587 586 586 586 586 586 585 585 585 584 584 584 584 584 584 584 584 584 584 584 584 584 584 583 580 481 486 498 498 501 499 269057 284478 291586 313847 317275 325715 325075 327744 305087 304530 300767 284176 293504 289338 291425 291744 289904 283023 279794 277550 206960 217773 215458 216572 188474 206761 215596 209175 203799 199983 196223 192198 194101 NA NA 0 -2 0 -1 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -3 -99 5 12 0 3 -2 NA 0 -0.34 0 -0.17 0 0 0 0 -0.17 0 0 -0.17 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.17 -0.51 -17.07 1.04 2.47 0 0.6 -0.4
Morbihan 56 227 226 225 226 227 231 231 233 233 237 243 248 249 249 250 253 254 255 256 257 258 260 260 261 261 262 263 263 261 261 261 261 261 250 400825 403011 415809 432333 447886 447588 471500 477097 474344 486405 500425 490294 506573 521614 535256 544470 552028 563468 573152 578400 546047 543175 537528 542248 506884 520978 530833 540474 563588 590889 619838 643873 716182 NA NA -1 -1 1 1 4 0 2 0 4 6 5 1 0 1 3 1 1 1 1 1 2 0 1 0 1 1 0 -2 0 0 0 0 -11 NA -0.44 -0.44 0.44 0.44 1.76 0 0.87 0 1.72 2.53 2.06 0.4 0 0.4 1.2 0.4 0.39 0.39 0.39 0.39 0.78 0 0.38 0 0.38 0.38 0 -0.76 0 0 0 0 -4.21
Moselle 57 904 908 701 701 729 735 738 740 740 746 746 749 751 753 750 750 758 758 758 757 756 762 763 763 762 762 757 751 718 720 727 730 729 724 367959 408689 443390 128435 502225 496335 133365 130944 120152 507550 392971 489820 479596 492068 489034 509614 524278 564412 613677 605737 584374 626421 684961 688331 613858 760451 910697 963422 1006373 1007189 1011302 1023447 1044876 NA NA 4 -207 0 28 6 3 2 0 6 0 3 2 2 -3 0 8 0 0 -1 -1 6 1 0 -1 0 -5 -6 -33 2 7 3 -1 -5 NA 0.44 -22.8 0 3.99 0.82 0.41 0.27 0 0.81 0 0.4 0.27 0.27 -0.4 0 1.07 0 0 -0.13 -0.13 0.79 0.13 0 -0.13 0 -0.66 -0.79 -4.39 0.28 0.97 0.41 -0.14 -0.69
Nièvre 58 331 331 329 323 317 316 316 316 317 314 312 313 313 313 313 313 313 313 313 313 313 313 313 313 313 313 313 313 312 312 312 312 311 308 231937 241473 257990 283062 297470 305286 321853 326972 326134 333026 343083 340361 346822 347755 347645 343581 333899 323783 313972 299312 270148 260502 255195 249673 248559 240078 245921 247702 245212 239635 233278 225198 219586 NA NA 0 -2 -6 -6 -1 0 0 1 -3 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 -3 NA 0 -0.6 -1.82 -1.86 -0.32 0 0 0.32 -0.95 -0.64 0.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.32 0 0 0 -0.32 -0.96
Nord 59 666 666 664 659 659 661 662 662 663 660 660 661 662 663 665 666 667 667 667 667 668 668 669 669 666 665 665 663 654 652 652 653 650 648 763401 837916 905603 990252 1026757 1085705 1133399 1158712 1212819 1303792 1392488 1448051 1520046 1603647 1670550 1736623 1812150 1867245 1896090 1961963 1788133 1969330 2029643 2022357 1917704 2096805 2293388 2418166 2511478 2520526 2531855 2555020 2571940 NA NA 0 -2 -5 0 2 1 0 1 -3 0 1 1 1 2 1 1 0 0 0 1 0 1 0 -3 -1 0 -2 -9 -2 0 1 -3 -2 NA 0 -0.3 -0.75 0 0.3 0.15 0 0.15 -0.45 0 0.15 0.15 0.15 0.3 0.15 0.15 0 0 0 0.15 0 0.15 0 -0.45 -0.15 0 -0.3 -1.36 -0.31 0 0.15 -0.46 -0.31
Oise 60 731 730 730 630 698 699 700 700 700 700 700 701 701 701 701 701 701 701 701 701 701 701 702 702 698 698 697 696 693 693 693 693 696 682 360251 383507 375816 397810 398792 399592 406331 403281 396351 401828 395702 390832 401618 404555 403086 401835 404511 407808 410050 411028 387760 405971 407432 402569 396724 435308 481289 540988 606320 661781 725603 766441 804810 NA NA -1 0 -100 68 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 -4 0 -1 -1 -3 0 0 0 3 -14 NA -0.14 0 -13.7 10.79 0.14 0.14 0 0 0 0 0.14 0 0 0 0 0 0 0 0 0 0 0.14 0 -0.57 0 -0.14 -0.14 -0.43 0 0 0 0.43 -2.01
Orne 61 623 624 595 537 532 512 511 511 511 511 510 510 511 511 512 512 512 512 512 512 513 513 513 513 513 513 511 507 507 507 507 507 505 385 401026 429506 427048 128871 443523 441912 442107 439884 430127 423350 414618 398250 392526 376126 367248 354387 339162 326952 315993 307433 274814 277637 273717 269331 273181 274862 280526 288503 293523 295472 293204 292337 292210 NA NA 1 -29 -58 -5 -20 -1 0 0 0 -1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 -2 -4 0 0 0 0 -2 -120 NA 0.16 -4.65 -9.75 -0.93 -3.76 -0.2 0 0 0 -0.2 0 0.2 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 -0.39 -0.78 0 0 0 0 -0.39 -23.76
Pas-de-Calais 62 931 930 923 905 905 905 905 905 904 905 905 906 906 906 905 905 905 906 906 906 907 907 907 907 908 910 910 909 898 898 897 894 896 891 537136 572604 611648 656674 666656 686459 697167 696980 699302 724088 749494 760759 794518 820344 854787 875494 907370 956466 1013492 1069355 990704 1172723 1205975 1180196 1169196 1277467 1366927 1397817 1402295 1412413 1433203 1441568 1461354 NA NA -1 -7 -18 0 0 0 0 -1 1 0 1 0 0 -1 0 0 1 0 0 1 0 0 0 1 2 0 -1 -11 0 -1 -3 2 -5 NA -0.11 -0.75 -1.95 0 0 0 0 -0.11 0.11 0 0.11 0 0 -0.11 0 0 0.11 0 0 0.11 0 0 0 0.11 0.22 0 -0.11 -1.21 0 -0.11 -0.33 0.22 -0.56
Puy-de-Dôme 63 437 438 438 441 443 444 443 443 443 443 444 455 465 467 469 470 470 470 471 472 472 472 472 473 473 473 473 473 470 470 470 470 470 464 507130 542834 553404 573096 589029 591458 600073 596295 590254 576141 569642 565569 570207 566064 570964 564266 555078 544194 535419 525916 490560 515399 500590 486103 478876 481380 508928 547743 580033 594365 598213 604266 629416 NA NA 1 0 3 2 1 -1 0 0 0 1 11 10 2 2 1 0 0 1 1 0 0 0 1 0 0 0 0 -3 0 0 0 0 -6 NA 0.23 0 0.68 0.45 0.23 -0.23 0 0 0 0.23 2.48 2.2 0.43 0.43 0.21 0 0 0.21 0.21 0 0 0 0.21 0 0 0 0 -0.63 0 0 0 0 -1.28
Pyrénées-Atlantiques 64 657 588 654 631 631 562 561 561 559 558 557 558 558 558 558 559 559 559 559 559 559 560 560 560 560 560 560 559 537 540 543 545 547 546 360336 388448 404284 434720 452582 458935 465487 453602 451755 436628 435497 426892 431525 434366 432999 425027 423572 426347 425815 433318 402981 414556 422719 413411 415797 420009 466038 508734 534748 555696 578514 600018 650356 NA NA -69 66 -23 0 -69 -1 0 -2 -1 -1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 -22 3 3 2 2 -1 NA -10.5 11.22 -3.52 0 -10.94 -0.18 0 -0.36 -0.18 -0.18 0.18 0 0 0 0.18 0 0 0 0 0 0.18 0 0 0 0 0 -0.18 -3.94 0.56 0.56 0.37 0.37 -0.18
Hautes-Pyrénées 65 499 498 495 491 489 484 488 480 479 479 480 480 480 480 480 480 480 480 480 480 480 480 480 480 481 481 481 479 474 474 474 474 474 469 178611 198763 212088 233031 244170 244196 251285 250934 245856 239805 239120 128795 238037 236474 234825 225861 218973 215546 209397 206095 185760 187875 189993 188604 201954 203544 211433 225730 227222 227922 224759 222368 229670 NA NA -1 -3 -4 -2 -5 4 -8 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -2 -5 0 0 0 0 -5 NA -0.2 -0.6 -0.81 -0.41 -1.02 0.83 -1.64 -0.21 0 0.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0.21 0 0 -0.42 -1.04 0 0 0 0 -1.05
Pyrénées-Orientales 66 248 248 248 226 226 227 227 228 229 230 231 231 231 231 231 232 232 232 232 232 232 233 234 234 233 233 233 232 221 221 226 226 226 226 110732 126626 143054 157052 164304 170679 180089 181941 183037 181681 189431 191745 197930 208855 211187 210125 208387 212121 213171 212986 217503 229979 238647 233347 228776 230287 251231 281976 299506 334557 363796 392803 445890 NA NA 0 0 -22 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 -1 0 0 -1 -11 0 5 0 0 0 NA 0 0 -8.87 0 0.44 0 0.44 0.44 0.44 0.43 0 0 0 0 0.43 0 0 0 0 0 0.43 0.43 0 -0.43 0 0 -0.43 -4.74 0 2.26 0 0 0
Bas-Rhin 67 561 561 558 560 560 560 559 560 560 559 558 559 559 559 559 560 560 560 560 560 560 560 561 561 560 560 560 560 519 520 522 526 527 514 410030 453539 517452 557535 580590 579085 598862 605833 581827 596994 607642 599189 596950 610823 611267 620481 637548 658374 685631 699600 650710 669981 687299 710920 672478 707166 769351 826605 882121 915676 953053 1026120 1094439 NA NA 0 -3 2 0 0 -1 1 0 -1 -1 1 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 0 -41 1 2 4 1 -13 NA 0 -0.53 0.36 0 0 -0.18 0.18 0 -0.18 -0.18 0.18 0 0 0 0.18 0 0 0 0 0 0 0.18 0 -0.18 0 0 0 -7.32 0.19 0.38 0.77 0.19 -2.47
Haut-Rhin 68 380 383 383 383 383 384 384 384 384 384 384 386 386 386 386 386 386 386 386 386 385 385 386 386 386 384 384 384 378 377 377 377 377 366 266001 296429 325481 375807 394535 409102 431182 436744 445436 459454 473314 459298 453850 461942 462549 471609 477477 495210 512080 517865 468943 490654 516726 507551 471705 509647 547920 585019 635209 650372 671319 708025 748614 NA NA 3 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 -1 0 1 0 0 -2 0 0 -6 -1 0 0 0 -11 NA 0.79 0 0 0 0.26 0 0 0 0 0 0.52 0 0 0 0 0 0 0 0 -0.26 0 0.26 0 0 -0.52 0 0 -1.56 -0.26 0 0 0 -2.92
Rhône 69 292 292 285 285 285 286 288 290 285 286 287 292 292 292 294 296 296 297 297 298 298 298 299 299 299 299 299 297 293 293 293 293 293 267 324474 368504 422498 484879 517305 535399 579421 611131 656223 699307 714986 706270 738024 772795 806248 837524 870396 874855 890074 947029 986202 1029098 1089568 1070026 959052 1015681 1181597 1326383 1429647 1445208 1508966 1578869 1708671 NA NA 0 -7 0 0 1 2 2 -5 1 1 5 0 0 2 2 0 1 0 1 0 0 1 0 0 0 0 -2 -4 0 0 0 0 -26 NA 0 -2.4 0 0 0.35 0.7 0.69 -1.72 0.35 0.35 1.74 0 0 0.68 0.68 0 0.34 0 0.34 0 0 0.34 0 0 0 0 -0.67 -1.35 0 0 0 0 -8.87
Haute-Saône 70 641 630 584 583 582 582 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 584 581 544 545 546 545 546 540 288961 301048 308400 343464 343993 348036 345452 348124 312950 317724 318228 303604 304524 296361 291401 281300 273296 266991 264241 257945 228618 226567 219480 213064 202830 209529 208639 214385 222254 231962 229650 229732 239278 NA NA -11 -46 -1 -1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 -37 1 1 -1 1 -6 NA -1.72 -7.3 -0.17 -0.17 0 0.34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.51 -6.37 0.18 0.18 -0.18 0.18 -1.1
Saône-et-Loire 71 609 607 602 576 575 575 574 574 576 577 577 580 589 589 589 590 589 589 589 589 589 589 589 590 590 590 589 586 571 573 574 573 573 565 452656 471457 498687 516696 536555 551587 564514 575154 571735 580869 598590 595714 614309 625589 625885 618523 621237 620360 613177 604445 554816 549240 538741 525676 506750 511182 535772 550362 569810 571852 559413 544893 554720 NA NA -2 -5 -26 -1 0 -1 0 2 1 0 3 9 0 0 1 -1 0 0 0 0 0 0 1 0 0 -1 -3 -15 2 1 -1 0 -8 NA -0.33 -0.82 -4.32 -0.17 0 -0.17 0 0.35 0.17 0 0.52 1.55 0 0 0.17 -0.17 0 0 0 0 0 0 0.17 0 0 -0.17 -0.51 -2.56 0.35 0.17 -0.17 0 -1.4
Sarthe 72 413 413 393 393 394 391 391 391 389 389 386 386 386 387 385 386 386 386 386 386 386 386 386 386 386 386 386 376 376 375 375 375 375 354 388046 410380 428065 457362 466888 470524 474876 473071 467193 466155 463619 446603 446239 438917 436111 429737 425077 422699 421470 419370 389235 387482 384619 388519 412214 420393 443019 461839 490385 504768 513654 529851 561050 NA NA 0 -20 0 1 -3 0 0 -2 0 -3 0 0 1 -2 1 0 0 0 0 0 0 0 0 0 0 0 -10 0 -1 0 0 0 -21 NA 0 -4.84 0 0.25 -0.76 0 0 -0.51 0 -0.77 0 0 0.26 -0.52 0.26 0 0 0 0 0 0 0 0 0 0 0 -2.59 0 -0.27 0 0 0 -5.6
Savoie 73 326 326 326 326 325 325 325 325 325 325 326 327 327 328 328 328 329 329 330 330 330 330 330 330 330 330 328 324 304 304 305 305 305 273 223406 242649 264108 0 292412 0 280973 0 275725 274864 271114 268030 268361 266438 267428 263297 259790 254781 253297 247890 225234 231210 235544 239010 236119 252192 266678 288921 305118 323675 348261 373258 411007 NA NA 0 0 0 -1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 -2 -4 -20 0 1 0 0 -32 NA 0 0 0 -0.31 0 0 0 0 0 0.31 0.31 0 0.31 0 0 0.3 0 0.3 0 0 0 0 0 0 0 -0.61 -1.22 -6.17 0 0.33 0 0 -10.49
Haute-Savoie 74 309 309 303 302 306 316 306 273 306 309 310 313 314 314 314 314 314 314 314 314 315 315 315 315 315 315 314 307 291 292 292 293 293 278 194425 202661 233632 0 269601 0 283847 0 265529 265447 273536 273112 273801 274087 275018 268267 265872 263803 260617 255137 235568 245317 252794 259961 270564 293854 329230 378550 447795 494505 568286 631679 724795 NA NA 0 -6 -1 4 10 -10 -33 33 3 1 3 1 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 -7 -16 1 0 1 0 -15 NA 0 -1.94 -0.33 1.32 3.27 -3.16 -10.78 12.09 0.98 0.32 0.97 0.32 0 0 0 0 0 0 0 0.32 0 0 0 0 0 -0.32 -2.23 -5.21 0.34 0 0.34 0 -5.12
Paris 75 10 10 10 12 12 12 12 12 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 559209 662015 677865 834655 981846 1032732 1188377 1233635 1467530 1696141 1825274 1851792 1988806 2269023 2344550 2447957 2536834 2714068 2763393 2888110 2906472 2871429 2891020 2829746 2725374 2850189 2790091 2590771 2299830 2176243 2152423 2125246 2262949 NA NA 0 0 2 0 0 0 0 0 -11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 NA 0 0 20 0 0 0 0 0 -91.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0
Seine-Maritime 76 988 988 933 761 759 758 758 759 759 758 755 758 758 758 758 758 759 759 759 759 758 758 758 758 758 757 756 752 745 745 745 745 744 706 630661 642362 637071 693777 711678 730114 749805 763681 760664 788854 769196 815817 798146 813809 833156 839645 837599 853633 863669 877176 880481 885106 905098 915444 845945 941474 1035661 1113808 1172743 1193108 1223429 1239138 1249907 NA NA 0 -55 -172 -2 -1 0 1 0 -1 -3 3 0 0 0 0 1 0 0 0 -1 0 0 0 0 -1 -1 -4 -7 0 0 0 -1 -38 NA 0 -5.57 -18.44 -0.26 -0.13 0 0.13 0 -0.13 -0.4 0.4 0 0 0 0 0.13 0 0 0 -0.13 0 0 0 0 -0.13 -0.13 -0.53 -0.93 0 0 0 -0.13 -5.11
Seine-et-Marne 77 561 560 556 556 555 529 527 527 527 527 528 529 530 530 530 530 530 530 533 533 534 534 534 534 534 533 533 531 514 514 514 514 514 507 299140 304068 302907 323394 326174 333088 340363 344840 341553 352408 354267 341661 347323 348991 355136 356709 359034 358325 361939 363561 349234 380017 406108 409311 407137 453438 524486 604342 755762 887112 1078166 1193767 1313414 NA NA -1 -4 0 -1 -26 -2 0 0 0 1 1 1 0 0 0 0 0 3 0 1 0 0 0 0 -1 0 -2 -17 0 0 0 0 -7 NA -0.18 -0.71 0 -0.18 -4.68 -0.38 0 0 0 0.19 0.19 0.19 0 0 0 0 0 0.57 0 0.19 0 0 0 0 -0.19 0 -0.38 -3.2 0 0 0 0 -1.36
Yvelines 78 267 267 265 265 265 265 265 265 265 265 264 265 265 265 266 266 266 266 266 266 266 266 265 265 265 265 263 262 262 262 262 262 262 259 182493 186038 185312 190656 191668 203797 204803 201955 207244 218368 222880 251157 235511 236471 247910 250552 263462 270228 277753 297562 321240 367267 408282 427078 431616 519176 687827 854382 1082255 1196111 1307150 1354304 1407560 NA NA 0 -2 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 -2 -1 0 0 0 0 0 -3 NA 0 -0.75 0 0 0 0 0 0 0 -0.38 0.38 0 0 0.38 0 0 0 0 0 0 0 -0.38 0 0 0 -0.75 -0.38 0 0 0 0 0 -1.15
Deux-Sèvres 79 364 364 364 355 354 354 354 354 354 354 355 355 355 355 354 353 353 353 355 355 356 356 356 356 356 356 356 351 302 303 307 308 305 256 240991 252727 279174 294289 303478 309598 320059 322999 327140 327583 331699 330550 335884 349345 352988 353489 345932 341696 338728 336903 309356 309100 308138 308122 312038 312032 320316 325603 335829 342812 345965 344392 366339 NA NA 0 0 -9 -1 0 0 0 0 0 1 0 0 0 -1 -1 0 0 2 0 1 0 0 0 0 0 0 -5 -49 1 4 1 -3 -49 NA 0 0 -2.47 -0.28 0 0 0 0 0 0.28 0 0 0 -0.28 -0.28 0 0 0.57 0 0.28 0 0 0 0 0 0 -1.4 -13.96 0.33 1.32 0.33 -0.97 -16.07
Somme 80 845 844 841 833 832 830 829 830 830 830 831 831 833 834 834 834 834 834 834 834 834 834 833 833 833 833 833 817 783 783 783 783 787 777 457465 493791 507870 541477 550859 558213 568446 569082 565447 571058 571042 555594 555263 549515 547721 545365 542158 536773 531541 518961 451887 473105 465842 466750 440717 463519 487524 511491 538462 544570 547825 555551 572024 NA NA -1 -3 -8 -1 -2 -1 1 0 0 1 0 2 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 -16 -34 0 0 0 4 -10 NA -0.12 -0.36 -0.95 -0.12 -0.24 -0.12 0.12 0 0 0.12 0 0.24 0.12 0 0 0 0 0 0 0 0 -0.12 0 0 0 0 -1.92 -4.16 0 0 0 0.51 -1.27
Tarn 81 365 365 362 326 323 319 315 315 316 316 316 317 318 318 318 320 320 321 322 323 323 323 324 324 325 326 326 326 324 324 324 324 324 315 271980 295885 290467 334834 346614 351656 360679 363073 354832 353633 355513 352718 359232 359223 358757 347739 339827 332093 330533 324090 295588 301717 302994 297871 298117 308197 319560 332011 338024 339345 342723 343402 377157 NA NA 0 -3 -36 -3 -4 -4 0 1 0 0 1 1 0 0 2 0 1 1 1 0 0 1 0 1 1 0 0 -2 0 0 0 0 -9 NA 0 -0.82 -9.94 -0.92 -1.24 -1.25 0 0.32 0 0 0.32 0.32 0 0 0.63 0 0.31 0.31 0.31 0 0 0.31 0 0.31 0.31 0 0 -0.61 0 0 0 0 -2.78
Tarn-et-Garonne 82 249 213 198 191 192 192 192 192 193 193 194 194 194 194 194 194 194 195 195 195 195 195 195 195 195 195 195 195 195 195 195 195 198 198 219530 230524 238183 242250 242688 239313 242307 237810 234842 232551 228800 221610 221364 217056 214046 206596 200390 195669 188553 182537 159559 164191 164259 164629 167664 172379 175847 183572 183314 190485 200220 206034 240663 NA NA -36 -15 -7 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 NA -14.46 -7.04 -3.54 0.52 0 0 0 0.52 0 0.52 0 0 0 0 0 0 0.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.54 0
Var 83 148 147 147 149 147 143 142 142 143 143 144 145 145 145 145 145 147 148 148 148 149 149 150 151 151 153 154 154 153 153 153 153 153 153 217447 227215 243759 257953 256685 261769 284732 290240 306225 315284 308500 299534 295763 288577 283689 288336 309191 326684 324638 330755 322945 347932 377104 398662 370688 413012 469557 555926 626093 708331 815449 898441 1007303 NA NA -1 0 2 -2 -4 -1 0 1 0 1 1 0 0 0 0 2 1 0 0 1 0 1 1 0 2 1 0 -1 0 0 0 0 0 NA -0.68 0 1.36 -1.34 -2.72 -0.7 0 0.7 0 0.7 0.69 0 0 0 0 1.38 0.68 0 0 0.68 0 0.67 0.67 0 1.32 0.65 0 -0.65 0 0 0 0 0
Vaucluse 84 150 150 148 148 148 148 149 149 149 149 149 150 150 150 150 150 150 150 150 150 150 151 151 151 151 151 151 151 151 151 151 151 151 151 191421 205832 224431 239113 246071 251080 259154 264618 268994 268237 266091 263451 255703 244149 241787 235411 236313 236949 239178 238656 219602 230549 241689 245508 249838 268318 303536 353966 390446 427343 467075 499685 540065 NA NA 0 -2 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 -1.33 0 0 0 0.68 0 0 0 0 0.67 0 0 0 0 0 0 0 0 0 0.67 0 0 0 0 0 0 0 0 0 0 0 0
Vendée 85 315 321 319 297 294 294 294 296 297 298 298 298 299 299 300 301 303 303 304 304 306 306 306 306 306 307 307 296 281 282 283 283 292 259 243420 268646 316587 330350 341011 352222 376184 383734 389683 395695 404473 401446 411740 421633 434808 442355 441735 441311 442777 438520 397292 395602 390396 389211 393784 395641 408928 421250 450641 483027 509356 539664 653359 NA NA 6 -2 -22 -3 0 0 2 1 1 0 0 1 0 1 1 2 0 1 0 2 0 0 0 0 1 0 -11 -15 1 1 0 9 -33 NA 1.9 -0.62 -6.9 -1.01 0 0 0.68 0.34 0.34 0 0 0.34 0 0.33 0.33 0.66 0 0.33 0 0.66 0 0 0 0 0.33 0 -3.58 -5.07 0.36 0.35 0 3.18 -11.3
Vienne 86 343 345 306 300 300 299 298 296 296 296 296 300 300 300 300 300 300 300 300 300 300 300 300 300 298 298 298 297 274 281 281 281 281 266 240920 253048 260636 282631 288002 291016 308391 317305 322585 322028 324527 320594 330916 340295 342785 344355 338114 336343 333622 332277 306248 310474 303072 306820 313932 319208 331619 340256 357366 371428 379977 399024 426066 NA NA 2 -39 -6 0 -1 -1 -2 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 -1 -23 7 0 0 0 -15 NA 0.58 -11.3 -1.96 0 -0.33 -0.33 -0.67 0 0 0 1.35 0 0 0 0 0 0 0 0 0 0 0 0 -0.67 0 0 -0.34 -7.74 2.55 0 0 0 -5.34
Haute-Vienne 87 211 195 221 201 199 199 199 199 199 200 200 202 203 203 203 203 203 203 205 205 205 205 206 206 206 206 205 205 201 201 201 201 201 195 245145 243195 272330 285033 292984 292848 314513 319197 319788 320075 326037 322500 336061 349332 363182 372878 375724 381753 385732 384736 350235 351311 335873 333589 336313 324429 332514 341589 352149 355737 353593 353893 374849 NA NA -16 26 -20 -2 0 0 0 0 1 0 2 1 0 0 0 0 0 2 0 0 0 1 0 0 0 -1 0 -4 0 0 0 0 -6 NA -7.58 13.33 -9.05 -1 0 0 0 0 0.5 0 1 0.5 0 0 0 0 0 0.99 0 0 0 0.49 0 0 0 -0.49 0 -1.95 0 0 0 0 -2.99
Vosges 88 532 532 531 532 531 530 528 528 530 530 530 530 531 530 530 530 531 531 530 530 531 531 531 532 531 531 531 522 517 516 516 515 515 507 295475 319681 341373 378824 390091 396737 406876 0 385650 394644 396868 154360 407082 406862 413707 410196 421412 421104 429812 433914 383684 382100 377980 376926 342315 372523 380676 388201 397957 395769 386258 380952 380192 NA NA 0 -1 1 -1 -1 -2 0 2 0 0 0 1 -1 0 0 1 0 -1 0 1 0 0 1 -1 0 0 -9 -5 -1 0 -1 0 -8 NA 0 -0.19 0.19 -0.19 -0.19 -0.38 0 0.38 0 0 0 0.19 -0.19 0 0 0.19 0 -0.19 0 0.19 0 0 0.19 -0.19 0 0 -1.69 -0.96 -0.19 0 -0.19 0 -1.55
Yonne 89 481 481 481 481 481 482 482 482 482 483 485 485 485 485 485 486 486 486 486 486 486 486 486 486 485 484 484 482 439 450 451 453 455 423 323727 325994 333905 353088 355437 361677 373624 379785 368131 370402 372131 362855 359070 357029 355364 344688 332656 321062 315179 303889 273118 277230 275755 271685 266014 266410 269826 283376 299851 311019 323096 333221 343377 NA NA 0 0 0 0 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 -1 0 -2 -43 11 1 2 2 -32 NA 0 0 0 0 0.21 0 0 0 0.21 0.41 0 0 0 0 0.21 0 0 0 0 0 0 0 0 -0.21 -0.21 0 -0.41 -8.92 2.51 0.22 0.44 0.44 -7.03
Territoire de Belfort 90 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 99 101 101 102 102 101 37772 40511 44681 50785 52275 53215 56026 57345 54011 56336 56915 56781 68600 74244 79758 83670 88047 92304 95421 101386 94338 96594 99403 99497 86648 99427 109371 118450 128125 131999 134097 137408 142461 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7 2 0 1 0 -1 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.6 2.02 0 0.99 0 -0.98
Essonne 91 199 199 197 197 197 196 196 196 196 196 196 196 196 196 197 198 198 198 198 198 198 198 198 198 198 197 196 196 196 196 196 196 196 194 110593 113696 110431 118237 118680 120529 122496 123601 123295 127803 130485 131548 135919 140035 147693 151734 159506 164625 169659 177216 187193 228021 271102 286903 294878 350992 478862 673485 923063 988000 1084824 1134238 1208004 NA NA 0 -2 0 0 -1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -2 NA 0 -1.01 0 0 -0.51 0 0 0 0 0 0 0 0 0.51 0.51 0 0 0 0 0 0 0 0 0 -0.51 -0.51 0 0 0 0 0 0 -1.02
Hauts-de-Seine 92 31 31 31 31 31 31 31 31 31 31 32 32 32 32 33 33 34 34 34 35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 36460 38665 41979 57437 66364 76306 88476 96625 126392 139197 175018 193308 208482 254928 293386 332076 386737 467391 529496 614862 724261 820716 949231 1019627 992859 1118020 1381805 1461619 1438930 1387039 1391658 1428881 1561745 NA NA 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 3.23 0 0 0 3.12 0 3.03 0 0 2.94 0 0 2.86 0 0 0 0 0 0 0 0 0 0 0
Seine-Saint-Denis 93 36 36 36 36 36 36 36 36 36 36 36 38 38 38 38 38 39 39 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 28901 29370 29438 38391 39494 44154 45023 48067 56237 78236 100317 120954 138099 180412 207901 230992 262735 307329 349545 411443 504956 635806 769315 776395 729361 845231 1083724 1249606 1322127 1324301 1381197 1382861 1515983 NA NA 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 5.56 0 0 0 0 2.63 0 2.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Val-de-Marne 94 42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 44 45 46 46 46 46 47 47 47 47 47 47 47 47 47 47 47 47 47 33471 30880 31801 44956 53581 59067 68014 70085 90810 90916 106836 120523 136612 161619 194938 213718 246363 288891 330320 386085 462212 559882 657334 685297 672037 767543 974962 1121319 1215713 1193655 1215538 1227250 1318537 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 2.38 2.33 2.27 2.22 0 0 0 2.17 0 0 0 0 0 0 0 0 0 0 0 0
Val-d’Oise 95 188 186 186 187 186 183 183 184 184 183 184 185 185 185 185 185 185 185 185 185 185 186 186 186 186 187 185 185 185 185 185 185 185 184 102252 103387 101148 107645 105530 106368 107503 107008 108751 116265 122975 122052 129655 134859 143028 143387 154118 164962 178444 196599 227220 283256 353374 350487 344687 412658 548429 693269 840885 920598 1049598 1105464 1168892 NA NA -2 0 1 -1 -3 0 1 0 -1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 -2 0 0 0 0 0 0 -1 NA -1.06 0 0.54 -0.53 -1.61 0 0.55 0 -0.54 0.55 0.54 0 0 0 0 0 0 0 0 0 0.54 0 0 0 0.54 -1.07 0 0 0 0 0 0 -0.54
rm(evol_deps_affichage, nbr_col)

4.1.2 Ajout de la France entière

cassini_reduite <- cassini
nom_dep <- "France entière"


evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite


# Boucle pour exploiter les données date par date
  for (label in labels_data_pop) {
    annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
    sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
    # sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
    nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
    pop_annee_dep <- sum(as.numeric(sous_tableau_reduit[, paste0("pop_", annee, "_val")]), na.rm=TRUE)
    i_reduit <- c(annee, nbr_com_reduit, pop_annee_dep) # On compile les résultats totaux
    evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
  }
  
  # On traite à la main les deux années 2011 et 2021
  # Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011) 
  # Pas très propre mais pas l'énergie de faire mieux là...
  CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
  colnames(CODGEO_2021_reduit) <- "CODGEO_new"
  # On joint pour avoir le nombre de communes fusionnantes
  CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus", "P09_POP")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
  # Pour les communes non fusionnantes, on indique qu'il y en a une
  CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
  
  i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus), sum(CODGEO_2021_reduit$P09_POP))
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
  
  
  # Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
  i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)), NA)
  
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
  
  colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com", "population")
  
  evol_nbr_com <- evol_nbr_com_reduit
  
  # evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
  # Est désormais fait plus haut
  # evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795 
  # evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
  
  evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
  evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
  evol_nbr_com[,3] <- as.numeric(evol_nbr_com[,3]) # Si on veut faire une seule colonne
  
  
  # Calcul de l'évolution en valeur absolue du nombre de commune dans le département
  evol_nbr_com$evol <- evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)
  
  # Calcul du taux d'évolution
  evol_nbr_com$tx_evol <- round(100 * (evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)) / lag(evol_nbr_com$nbr_com), 2)
  
  # On compile les résultats du département en question
  departement <- c(nom_dep, "", evol_nbr_com$nbr_com, evol_nbr_com$population, evol_nbr_com$evol, evol_nbr_com$tx_evol)
  # On ajoute ces résultats dans le tableau global
  evol_deps <- rbind (evol_deps, departement, stringsAsFactors = FALSE)

# ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
#   geom_line() +
#   scale_x_continuous (breaks = seq(1780, 2030, 20)) +
#   labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

4.1.3 Graphique en base 100

# Création d'un tableau en base 100 en 1800
nbr_col_select <- length(labels_data_pop)+2+2 # Indique la dernière colonne à sélectionner : nombre de recensements dans la base Cassini, + deux colonnes au début du tableau, + 2011 et 2021.
evol_deps[3:nbr_col_select] <- apply(evol_deps [, 3:nbr_col_select], 2, as.numeric)
evol_deps_100 <- evol_deps [, 1:nbr_col_select]
evol_deps_100[3:nbr_col_select] <- 100 * evol_deps_100[3:nbr_col_select] / evol_deps_100$`1800`

# On change le tableau de sens (inversion lignes/colonnes) pour faciliter l'exploitation
pr_graph <- as.data.frame(t(evol_deps_100))
# On met le nom des départements en nom de colonne
colnames(pr_graph) <- pr_graph[1,]
pr_graph <- pr_graph [3:nrow(pr_graph),]
# On met la date dans une colonne à part
pr_graph$Date <- row.names(pr_graph)
# Pour avoir un graphique complètement exploitable, on change la forme des données
pr_graph <- melt(pr_graph, id.vars = "Date")
pr_graph$Date <- as.numeric(pr_graph$Date)
pr_graph$value <- as.numeric(pr_graph$value)

ggplot(data=pr_graph, aes(x=Date, y = value)) +
  geom_line(aes(color = variable)) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) + 
  labs(title= "Communes par départements (base 100 = 1800)", subtitle="1800-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

Quelques départements connaissent des trajectoires assez hachées laissant penser à des problèmes de comptabilisation :

  • Côte-d’Or (21), qui perd presque 250 communes en 1836 (et les regagne ensuite) ;

  • Oise (60) avec une forte baisse en 1831.

  • Haute-Vienne (87) avec une forte baisse en 1820)

[Ci-dessous, remarques avant que la mention “abs.” soit prise en compte pour comptabiliser les communes] Pour certains départements, les fluctuations paraissent particulièrement brutales voire carrément incohérentes, par exemple lorsque d’un recensement sur l’autre on passe de plusieurs centaines de communes à… zéro.

Nécessité de regarder en détail les données des départements suivants :

  • Alpes-Maritimes (06) qui fait le yoyo ;

  • Charente (16) et la Loire-Atlantique qui n’ont aucune commune en 1836 mais stable avant et après ;

  • Côte-d’Or (21), qui perd presque 250 communes en 1836 (et les regagne ensuite) ;

  • Meurthe-et-Moselle (54) et Moselle (57) : évolutions très hachées ;

  • Orne (61) : n’a plus que 100 communes en 1831 et les regagne après ;

  • Savoie (73) et Haute-Savoie (74) : n’ont aucune commune en 1831, 1841 et 1851 (absence de transposition de recensements non français ?) ;

  • Vosges (88) : bizareries en 1851 (plus de communes) et 1872 (seulement une cinquantaine).

4.2 Départements par phase : cartographie du nombre de communes

# Phases envisagées au départ par Nicolas Verdier :
# 1790-1837, 1838-1884, puis 1885-1970, puis 1970-2000, puis 2000-2023

# Phases retenues du fait des données par recensement :

evol_deps$evol_1800_1836 <- evol_deps$`1836` - evol_deps$`1800`
evol_deps$evol_1836_1886 <- evol_deps$`1886` - evol_deps$`1836`
evol_deps$evol_1886_1968 <- evol_deps$`1968` - evol_deps$`1886`
evol_deps$evol_1968_1999 <- evol_deps$`1999` - evol_deps$`1968`
evol_deps$evol_1999_2021 <- evol_deps$`2021` - evol_deps$`1999`

evol_deps$tx_evol_1800_1836 <- round(100 * (evol_deps$`1836` - evol_deps$`1800`) / evol_deps$`1800`, 2)
evol_deps$tx_evol_1836_1886 <- round(100 * (evol_deps$`1886` - evol_deps$`1836`) / evol_deps$`1836`, 2)
evol_deps$tx_evol_1886_1968 <- round(100 * (evol_deps$`1968` - evol_deps$`1886`) / evol_deps$`1886`, 2)
evol_deps$tx_evol_1968_1999 <- round(100 * (evol_deps$`1999` - evol_deps$`1968`) / evol_deps$`1968`, 2)
evol_deps$tx_evol_1999_2021 <- round(100 * (evol_deps$`2021` - evol_deps$`1999`) / evol_deps$`1999`, 2)

# colnames(evol_deps)

phases <- c("evol_1800_1836", "evol_1836_1886", "evol_1886_1968", "evol_1968_1999", "evol_1999_2021")
date_phases <- paste0(substr (phases, start = 6, stop = 9), "-", substr (phases, start = 11, stop = 14))

phase <- phases[1]

ShpDep_IdF <- subset (ShpDep, ShpDep$CODE_DEPT == "75" | ShpDep$CODE_DEPT == "77" | ShpDep$CODE_DEPT == "78" | ShpDep$CODE_DEPT == "91" |
                        ShpDep$CODE_DEPT == "92" | ShpDep$CODE_DEPT == "93" | ShpDep$CODE_DEPT == "94" | ShpDep$CODE_DEPT == "95")

for (phase in phases) {
  date_phase <- paste0(substr(phase, start = 6, stop = 9), "-", substr(phase, start = 11, stop = 14))
  
  # On extrait les données à la phase voulue pour simplifier la cartographie
  pr_carte <- evol_deps[, c("Département", "CODE_DEPT", phase, paste0("tx_", phase))]
  colnames(pr_carte) <- c("Département", "CODE_DEPT", "evol_abs", "tx_evol")
  
  
  # Carte départementale présentant l'évolution du nombre de communes

    # Si on veut exporter (remettre dev.off en fin de séquence)
  # svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", taux).svg"))
  
  plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
  
  choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE,
             legend.pos = "topleft", 
             legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
  
    layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini.", scale = NULL,
              author = "G. Bideau", frame ="", col = NA)
  
    # Ajout d'un carton pour la région parisienne
    # Page claire pour aider sur la représentation graphique : https://sites.google.com/site/rgraphiques/realiser-des-graphiques-avec-le-logiciel-r/g%C3%A9rer-les-graphiques-combinaisons-forme-et-sauvegarde/combinaisons-graphiques
    par(new = TRUE)
    par(fig=c(0.6, 0.9, 0.05, 0.25)) # On indique où placer le carton
    par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
    # par(mar = c(5.1, 4.1, 4.1, 2.1)) # Marges par défaut
    plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
    
      choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE,
             legend.pos = "n", 
             legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
      
      # dev.off()
    par(fig=c(0, 1, 0, 1)) # On reprend les données initiales
    par(mar = c(5.1, 4.1, 4.1, 2.1)) # Et les marges

  # Carte départementale présentant l'évolution du nombre de communes en valeur absolue
  
  # Création d'un champs adapté pour la cartographie
    pr_carte$evol_abs_negatif <- 0 -pr_carte$evol_abs
    pr_carte$evol_abs_negatif[pr_carte$evol_abs_negatif < 0] <- NA
      
  # Si on veut exporter (remettre dev.off en fin de séquence)
  # svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", valeurs absolues).svg"))
  
  plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
  
  choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE,
             legend.pos = "topleft", 
             legend.title.txt = "Taux d'évolution")
  
  # On rajoute les cercles en fonction de l'évolution en valeur absolue
  propSymbolsLayer(spdf = ShpDep,
                   df = pr_carte,
                   spdfid = "CODE_DEPT",
                   dfid = "CODE_DEPT",
                   var = "evol_abs_negatif",
                   inches = 0.2,
                   fixmax = 500,
                   # breakval = 0, # On précise une valeur tournant
                   symbols = "circle",
                   col = "blue",
                   # col2 = "red",
                   legend.pos = "left",
                   legend.title.txt = "\n\n\n\n\n\nNombre de communes\nsupprimées",
                   legend.style = "c",
                   legend.frame = FALSE,
                   add = TRUE)
  layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
              author = "G. Bideau", frame ="", col = NA)
  
   # Ajout d'un carton pour la région parisienne
    par(new = TRUE)
    par(fig=c(0.6, 0.9, 0.05, 0.25)) # On indique où placer le carton
    par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
    plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
    
      choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame, pour l'IdF
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE, legend.pos = "n", )
        # On rajoute les cercles en fonction de l'évolution en valeur absolue, pour l'IdF
  propSymbolsLayer(spdf = ShpDep_IdF,
                   df = pr_carte,
                   spdfid = "CODE_DEPT",
                   dfid = "CODE_DEPT",
                   var = "evol_abs_negatif",
                   inches = 0.2,
                   fixmax = 500,
                   # breakval = 0, # On précise une valeur tournant
                   symbols = "circle",
                   col = "blue",
                   # col2 = "red",
                   legend.pos = "n",
                   add = TRUE)
  
  # dev.off()
  par(fig=c(0, 1, 0, 1)) # On reprend l'ensemble de la place pour les figures
  par(mar = c(5.1, 4.1, 4.1, 2.1)) # Et les marges
}

4.3 Arrondissements par phase : évolution du nombre de communes [Jachère]

Travail sur les arrondissements envissagé avec Nicolas Verdier mais en attente d’un travail sur l’assignation de chaque commune Cassini à une commune récente ou à un arrondissement.

Compilation données

Compilation qui a été bricolée par copié/collé, tout est à revérifier une fois qu’on aura un champs propre

liste_arrond <- sort(unique (cassini$departement_1999)) #     Champ de la base Cassini à reprendre     

num_arrond <- 21

# Création d'un tableau pour accueillir les données de l'ensemble des départements
evol_arrond <- data.frame()

for (num_arrond in liste_arrond) {
  
cassini_reduite <- subset(cassini, departement_1999 == num_arrond)
nom_dep <- dep$LIBELLE[dep$CODE_DEPT == num_arrond]


evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite


# Boucle pour exploiter les données date par date
  for (label in labels_data_pop) {
    annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
    sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac." | cassini_reduite[, label] == "abs.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
    # sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
    nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
    pop_annee_dep <- sum(as.numeric(sous_tableau_reduit[, paste0("pop_", annee, "_val")]), na.rm=TRUE)
    i_reduit <- c(annee, nbr_com_reduit, pop_annee_dep) # On compile les résultats totaux
    evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
  }
  
  # On traite à la main les deux années 2011 et 2021
  # Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011) 
  # Pas très propre mais pas l'énergie de faire mieux là...
  CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
  colnames(CODGEO_2021_reduit) <- "CODGEO_new"
  # On joint pour avoir le nombre de communes fusionnantes
  CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus", "P09_POP")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
  # Pour les communes non fusionnantes, on indique qu'il y en a une
  CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1
  
  i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus), sum(CODGEO_2021_reduit$P09_POP))
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)
  
  
  # Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
  i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)), NA)
  
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)
  
  colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com", "population")
  
  evol_nbr_com <- evol_nbr_com_reduit
  
  # evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
  # Est désormais fait plus haut
  # evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795 
  # evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800
  
  evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
  evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne
  evol_nbr_com[,3] <- as.numeric(evol_nbr_com[,3]) # Si on veut faire une seule colonne
  
  
  # Calcul de l'évolution en valeur absolue du nombre de commune dans le département
  evol_nbr_com$evol <- evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)
  
  # Calcul du taux d'évolution
  evol_nbr_com$tx_evol <- round(100 * (evol_nbr_com$nbr_com - lag(evol_nbr_com$nbr_com)) / lag(evol_nbr_com$nbr_com), 2)
  

# On compile les résultats du département en question
arrondissement <- c(num_arrond, evol_nbr_com$nbr_com, evol_nbr_com$evol, evol_nbr_com$tx_evol)
# On ajoute ces résultats dans le tableau global
evol_arrond <- rbind (arrondissement, departement, stringsAsFactors = FALSE)



rm(label, annee, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021_reduit, CODGEO_2021_reduit, i_2011_reduit, graphique)

}

# Création d'une colonne identifiant les deux recensements en jeu dans les évolutions
evol_nbr_com$ident_evol <- paste0("evol_", lag(evol_nbr_com$annees), "_", evol_nbr_com$annees)

# On identifie les colonnes du tableau regroupant les données de tous les départements
colnames(evol_arrond) <- c("   Code Arrondissement ??  ", evol_nbr_com$annees, evol_nbr_com$ident_evol, paste0("tx_", evol_nbr_com$ident_evol))

Cartographie

# Phases envisagées au départ par Nicolas Verdier :
# 1790-1837, 1838-1884, puis 1885-1970, puis 1970-2000, puis 2000-2023

# Phases retenues du fait des données par recensement :

evol_deps$evol_1800_1836 <- evol_deps$`1836` - evol_deps$`1800`
evol_deps$evol_1836_1886 <- evol_deps$`1886` - evol_deps$`1836`
evol_deps$evol_1886_1968 <- evol_deps$`1968` - evol_deps$`1886`
evol_deps$evol_1968_1999 <- evol_deps$`1999` - evol_deps$`1968`
evol_deps$evol_1999_2021 <- evol_deps$`2021` - evol_deps$`1999`

evol_deps$tx_evol_1800_1836 <- round(100 * (evol_deps$`1836` - evol_deps$`1800`) / evol_deps$`1800`, 2)
evol_deps$tx_evol_1836_1886 <- round(100 * (evol_deps$`1886` - evol_deps$`1836`) / evol_deps$`1836`, 2)
evol_deps$tx_evol_1886_1968 <- round(100 * (evol_deps$`1968` - evol_deps$`1886`) / evol_deps$`1886`, 2)
evol_deps$tx_evol_1968_1999 <- round(100 * (evol_deps$`1999` - evol_deps$`1968`) / evol_deps$`1968`, 2)
evol_deps$tx_evol_1999_2021 <- round(100 * (evol_deps$`2021` - evol_deps$`1999`) / evol_deps$`1999`, 2)

# colnames(evol_deps)

phases <- c("evol_1800_1836", "evol_1836_1886", "evol_1886_1968", "evol_1968_1999", "evol_1999_2021")
date_phases <- paste0(substr (phases, start = 6, stop = 9), "-", substr (phases, start = 11, stop = 14))

phase <- phases[1]

# Pour faciliter la carte
# ShpDep <- as(dep, "Spatial")
ShpDep <- as_Spatial(dep) # Pose moins de problème
ShpDep_IdF <- subset (ShpDep, ShpDep$CODE_DEPT == "75" | ShpDep$CODE_DEPT == "77" | ShpDep$CODE_DEPT == "78" | ShpDep$CODE_DEPT == "91" |
                        ShpDep$CODE_DEPT == "92" | ShpDep$CODE_DEPT == "93" | ShpDep$CODE_DEPT == "94" | ShpDep$CODE_DEPT == "95")

for (phase in phases) {
  date_phase <- paste0(substr(phase, start = 6, stop = 9), "-", substr(phase, start = 11, stop = 14))
  
  # On extrait les données à la phase voulue pour simplifier la cartographie
  pr_carte <- evol_deps[, c("Département", "CODE_DEPT", phase, paste0("tx_", phase))]
  colnames(pr_carte) <- c("Département", "CODE_DEPT", "evol_abs", "tx_evol")
  
  
  # Carte départementale présentant l'évolution du nombre de communes

    # Si on veut exporter (remettre dev.off en fin de séquence)
  # svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", taux).svg"))
  
  plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
  
  choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE,
             legend.pos = "topleft", 
             legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
  
    layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini.", scale = NULL,
              author = "G. Bideau", frame ="", col = NA)
  
    # Ajout d'un carton pour la région parisienne
    # Page claire pour aider sur la représentation graphique : https://sites.google.com/site/rgraphiques/realiser-des-graphiques-avec-le-logiciel-r/g%C3%A9rer-les-graphiques-combinaisons-forme-et-sauvegarde/combinaisons-graphiques
    par(new = TRUE)
    par(fig=c(0.7, 1, 0, 0.2)) # On indique où placer le carton
    par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
    plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
    
      choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE,
             legend.pos = "n", 
             legend.title.txt = "Taux d'évolution du\nnombre de communes\nsur la période")
      
      # dev.off()
    par(fig=c(0, 1, 0, 1)) # On indique où placer le carton


  # Carte départementale présentant l'évolution du nombre de communes en valeur absolue
  
  # Création d'un champs adapté pour la cartographie
    pr_carte$evol_abs_negatif <- 0 -pr_carte$evol_abs
    pr_carte$evol_abs_negatif[pr_carte$evol_abs_negatif < 0] <- NA
      
  # Si on veut exporter (remettre dev.off en fin de séquence)
  # svg(paste0("figures/Evol nombre de communes par départements (", date_phases, ", valeurs absolues).svg"))
  
  plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
  
  choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE,
             legend.pos = "topleft", 
             legend.title.txt = "Taux d'évolution")
  
  # On rajoute les cercles en fonction de l'évolution en valeur absolue
  propSymbolsLayer(spdf = ShpDep,
                   df = pr_carte,
                   spdfid = "CODE_DEPT",
                   dfid = "CODE_DEPT",
                   var = "evol_abs_negatif",
                   inches = 0.2,
                   fixmax = 500,
                   # breakval = 0, # On précise une valeur tournant
                   symbols = "circle",
                   col = "blue",
                   # col2 = "red",
                   legend.pos = "left",
                   legend.title.txt = "\n\n\n\n\n\nNombre de communes\nsupprimées",
                   legend.style = "c",
                   legend.frame = FALSE,
                   add = TRUE)
  layoutLayer(title = paste0("Évolution du nombre de communes par départements (", date_phase, ")"), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
              author = "G. Bideau", frame ="", col = NA)
  
   # Ajout d'un carton pour la région parisienne
    par(new = TRUE)
    par(fig=c(0.7, 1, 0, 0.2)) # On indique où placer le carton
    par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
    plot(ShpDep_IdF, col = "grey", border = "white", axes = FALSE)
    
      choroLayer(spdf = ShpDep_IdF, # SpatialPolygonsDataFrame, pour l'IdF
             df = pr_carte, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "tx_evol",
             # Si on souhaite faire les groupes manuellement :
             breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 6,
             add=TRUE, legend.pos = "n", )
        # On rajoute les cercles en fonction de l'évolution en valeur absolue, pour l'IdF
  propSymbolsLayer(spdf = ShpDep_IdF,
                   df = pr_carte,
                   spdfid = "CODE_DEPT",
                   dfid = "CODE_DEPT",
                   var = "evol_abs_negatif",
                   inches = 0.2,
                   fixmax = 500,
                   # breakval = 0, # On précise une valeur tournant
                   symbols = "circle",
                   col = "blue",
                   # col2 = "red",
                   legend.pos = "n",
                   add = TRUE)
  
  # dev.off()
  
  
}

4.4 Départements par phase et par taille des communes

4.4.1 Création des données

On observe ici, département par département, le nombre de communes en fonction de certains seuils démographiques

labels_data_pop <- colnames(cassini[grep(pattern = "_info", colnames(cassini), ignore.case = FALSE)])
annees_recensement <-   substr(labels_data_pop, start =5, stop = nchar(labels_data_pop)-5) # On repère le n° de l'année en segmentant le label
# On rajoute 2011 et 2021 (ce n'est pas prêt, les données n'ont pas été rajoutées dans la base Cassini)
# annees_recensement <- c(annees_recensement, 2011, 2021)

listeSeuils <- c(50, 100, 200, 500, 1000, 2000)

annee <- annees_recensement[1]
seuil <- listeSeuils[1]

for (annee in annees_recensement) {
  
  results <- evol_deps[, c("CODE_DEPT", "Département", annee)]
  
  temp <- cassini[, c("nom_cassini", paste0("pop_", annee, "_val"), paste0("pop_", annee, "_info"), "departement_1999")]
  colnames(temp) <- c("nom_cassini", "pop", "info", "CODE_DEPT")
  temp$pop <- as.numeric (temp$pop)
  
  # Tableau présentant, par département, la qualité des données sur l'année étudiée, s'y reporter pour valider les données
  table(temp$info, temp$CODE_DEPT)
  

  for (seuil in listeSeuils) {
    
    temp_sub <- subset(temp, temp$pop < seuil)
    # On compte le nombre de communes par départements étant en-dessous du seuil fixé
    temp2 <- data.frame(table(temp_sub$CODE_DEPT))
    temp2$Var1 <- as.character(temp2$Var1)
    temp2[nrow(temp2)+1,] <- c("", sum(as.numeric(temp2$Freq)))
    colnames(temp2)<-c("CODE_DEPT", paste0("ComMoins", seuil, "hab_", annee))
    temp2[,2] <- as.numeric (temp2[,2])
    results <- merge(results, temp2, by = "CODE_DEPT", all.x = TRUE)
    
    results[, paste0("PartComMoins", seuil, "hab_", annee)] = round((results[, paste0("ComMoins", seuil, "hab_", annee)] /
                                                        results[, annee] *100), 1)

# Calculs qui pourraient avoir de l'intérêt mais risquent d'alourdir le tableau donc laissés de côté.
# Si volonté de les intégrer, revoir la rédaction (adaptations nécessaires, par exemple i = seuil)
# results[, paste0("EvolNbrComMoins", i, "hab")] = results[, paste0("ComMoins", i, "habAp")] -
#   results[, paste0("ComMoins", i, "habAv")] # Calcul de l'évolution en valeur absolue
# results[, paste0("EvolComMoins", i, "hab")] =
#   round((
#   (results[, paste0("ComMoins", i, "habAp")] - results[, paste0("ComMoins", i, "habAv")]) /
#     results[, paste0("ComMoins", i, "habAv")] *100), 1) # Calcul du pourcentage d'évolutions du nombre de communes sous le seuil i
# results[, paste0("EvolPartComMoins", i, "hab")] =
#   round((
#   (results[, paste0("PartComMoins", i, "habAp")] - results[, paste0("PartComMoins", i, "habAv")]) / results[, paste0("PartComMoins", i, "habAv")]*100), 1) # calcul de l'évolution de la part des communes sous le seuil i
# Suite laissée de côté car pas adapté aux données Cassini (vient du fichier d'analyse des communes nouvelles)
# Pour calculer le nombre de communes sous le seuil i ayant fusionné
# temp3 <- subset(df2011, df2011$P09_POP < i & FUSION == "OUI")
# temp3 <- data.frame(table(temp3$CODE_DEPT))
# colnames(temp3)<-c("CODE_DEPT", paste0("ComFusMoins", i, "hab"))
# results <- merge(results, temp3, by = "CODE_DEPT", all.x = TRUE)

}


evol_deps <- merge(evol_deps, results[, c(1, 4:length(results))], by = "CODE_DEPT")
# evol_deps[is.na(evol_deps)] <- "0/NA" # Si on veut signaler les départements pour lesquels aucunes communes sous les seuils n'ont été repérées (car risque qu'il s'agisse d'une absence de données)

}

rm(temp, temp_sub, temp2, results)

4.4.2 Export données pour Shiny (ou autre)

# Export données
try(save(cassini, evol_deps, listeSeuils, annees_recensement, evol_deps_100, file = "nbr_communes_Fr_shiny/data/dataCassini.Rdata"))
st_write(obj = dep, dsn = "nbr_communes_Fr_shiny/data/geom.gpkg", layer = "dep", delete_layer = TRUE, quiet = TRUE)

# Test import données
dep <- st_read("nbr_communes_Fr_shiny/data/geom.gpkg", layer = "dep", quiet = TRUE)
load ("nbr_communes_Fr_shiny/data/dataCassini.Rdata")

4.4.3 Visualisation des données (test Shiny)

4.4.4 Visualisation des données classiques

departement <- evol_deps$Département[2]

liste_dep <- evol_deps$Département
# liste_dep <- liste_dep[1] # Pour n'afficher que les graphiques sur la France entière

# for (seuil in listeSeuils [c(1, 2, 4, 6)]) { Si on veut alléger les sorties
for (seuil in listeSeuils) {
  for (departement in liste_dep) {

    num_dep <- evol_deps$CODE_DEPT[evol_deps$Département == departement]    
  evol_dep <- subset(evol_deps, evol_deps$Département == departement)
   # Graphique, pour chaque département, de l'évolution du nombre de communes sous certain seuil
  
  colonnes_select <- colnames(evol_deps[grep(pattern = paste0("^ComMoins", seuil, "hab"), colnames(evol_deps), ignore.case = FALSE)])

  pr_graph <- evol_dep[, colonnes_select]
  
  colnames(pr_graph) <- substr (colnames(pr_graph), start = nchar(colnames(pr_graph))-3, stop = nchar(colnames(pr_graph)))
  pr_graph <- melt(pr_graph)
  pr_graph[,1] <- as.numeric(as.character(pr_graph[,1]))
  colnames(pr_graph) <- c("annees", "nbr_com")
  graphique <- ggplot(data=pr_graph, aes(x=annees, y=nbr_com)) +
  geom_line() +
  ylim(0, max(pr_graph$nbr_com)+50) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) +
  labs(title= paste0("Nombre de communes de moins de ", seuil, " hab. en ", departement, " (", num_dep, ")"), subtitle="1795-2021", x="", y = paste0("Nombre de communes de moins de ", seuil," habitants"), caption="Sources : cassini.ehess.fr, INSEE")

print(graphique)

 colonnes_select <- colnames(evol_deps[grep(pattern = paste0("PartComMoins", seuil, "hab"), colnames(evol_deps), ignore.case = FALSE)])

  pr_graph <- evol_dep[, colonnes_select]
  
  colnames(pr_graph) <- substr (colnames(pr_graph), start = nchar(colnames(pr_graph))-3, stop = nchar(colnames(pr_graph)))
  pr_graph <- melt(pr_graph)
  pr_graph[,1] <- as.numeric(as.character(pr_graph[,1]))
  colnames(pr_graph) <- c("annees", "prop_com")

    graphique <- ggplot(data=pr_graph, aes(x=annees, y=prop_com)) +
  geom_line() +
  ylim(0, max(pr_graph$prop_com)+10) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) +
  labs(title= paste0("Proportion de communes de moins de ", seuil, " hab. en ", departement, " (", num_dep, ")"), subtitle="1795-2021", x="", y = paste0("Pourcentage de communes de moins de ", seuil," habitants"), caption="Sources : cassini.ehess.fr, INSEE")

print(graphique)

  }
  
  for (annee in annees_recensement) {
    
colonne_select <- colnames(evol_deps[grep(pattern = paste0("^ComMoins", seuil, "hab_", annee), colnames(evol_deps), ignore.case = FALSE)])
# NB : Ajouter "^" pour signifier un début de ligne, pour différencier PartComMoins et ^ComMoins
pr_repr <- evol_deps[, c("Département", "CODE_DEPT", colonne_select)]
colnames(pr_repr) <- c("Département", "CODE_DEPT", "Données")

plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
    # On rajoute les cercles en fonction de l'évolution en valeur absolue
  propSymbolsLayer(spdf = ShpDep,
                   df = pr_repr,
                   spdfid = "CODE_DEPT",
                   dfid = "CODE_DEPT",
                   var = "Données",
                   inches = 0.2,
                   # breakval = 0, # On précise une valeur tournant
                   symbols = "circle",
                   col = "blue",
                   # col2 = "red",
                   legend.pos = "left",
                   # legend.title.txt = "Nombre de communes sous le seuil",
                   legend.style = "c",
                   legend.frame = FALSE,
                   add = TRUE)
  layoutLayer(title = paste0("Nombre de communes de moins de ", seuil, " habitants (", annee, ")"), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
              author = "G. Bideau", frame ="", col = NA)

  # En regardant la part de communes
colonne_select <- colnames(evol_deps[grep(pattern = paste0("PartComMoins", seuil, "hab_", annee), colnames(evol_deps), ignore.case = FALSE)])
# NB : Ajouter "^" pour signifier un début de ligne, pour différencier PartComMoins et ^ComMoins
pr_repr <- evol_deps[, c("Département", "CODE_DEPT", colonne_select)]
colnames(pr_repr) <- c("Département", "CODE_DEPT", "Données")

plot(ShpDep, col = "grey", border = "white", axes = FALSE) # Fond de carte
  # Carte choroplèthe en fonction de la superficie moyenne des communes dans le département
  choroLayer(spdf = ShpDep, # SpatialPolygonsDataFrame
             df = pr_repr, # data frame
             spdfid = "CODE_DEPT",
             dfid = "CODE_DEPT",
             var = "Données",
             # Si on souhaite faire les groupes manuellement :
             # breaks = c(-60, -10, -5, 0, 5, 10, 30), # liste des seuils (hypothèses)
             # col = carto.pal(pal1 = "blue.pal", n1 = 3, pal2 = "red.pal", n2 = 3),
             # Si on souhaite avoir des groupes par quantiles :
             # col = carto.pal(pal1 = "sand.pal", n1 = 4), method = "quantile",
             nclass = 5,
             col = carto.pal(pal1 = "blue.pal", n1 = 0, pal2 = "red.pal", n2 = 5),
             add=TRUE,
             legend.pos = "topleft", 
             legend.title.txt = "")
  layoutLayer(title = paste0("Pourcentage de communes de moins de ", seuil, " habitants (", annee, ")"), coltitle = "black",
              sources = "Sources : INSEE, IGN, Cassini, 2023.", scale = NULL, horiz = FALSE,
              author = "G. Bideau", frame ="", col = NA)
 
  
  
   
  }
}

4.5 CAH par départements

4.5.1 Import données si nécessaire

Création section pour le moment où on a besoin de relancer juste cette partie du code.

# dep <- st_read("data/geom.gpkg", layer = "dep", quiet = TRUE)

# Pour faciliter la cortographie
# ShpDep <- as_Spatial(dep) 

dep <- st_read("nbr_communes_Fr_shiny/data/geom.gpkg", layer = "dep", quiet = TRUE)
load ("nbr_communes_Fr_shiny/data/dataCassini.Rdata")

4.5.2 Réalisation CAH

# Calcul de quelques variables
dep <- merge (dep, evol_deps, by = "CODE_DEPT")


# Création d'une variable de surface
dep$surface <- st_area(dep) # Attention, unités : m²
dep$surface <- units::set_units(dep$surface, km^2) # On passe en km²

# Densité de communes en 1800 et en 2021
dep$dens_comm_1800 <- as.numeric(dep$`1800`/dep$surface)
dep$dens_comm_2021 <- as.numeric(dep$`2021`/dep$surface)

# Nombre d'habitants par km²
dep$dens_1800 <- as.numeric(dep$pop_1800)/dep$surface
dep$dens_2011 <- as.numeric(dep$pop_2011)/dep$surface

# Nombre de communes par habitants
# dep$dens_1800 <- dep$`1800`/as.numeric(dep$pop_1800)
# dep$dens_2011 <- dep$`2011`/as.numeric(dep$pop_2011)

# PourCAH <- merge (evol_deps_100, dep[, c("CODE_DEPT")])
# nom_test_CAH <- "ts_recensements_1800-2011"
# Remarques : Cartographie assez confuse, avec un groupe 2 très important et regroupant des départements qu'a priori on aurait dissociés.

# PourCAH <- merge (evol_deps_100, dep[, c("CODE_DEPT", "dens_comm_1800", "dens_comm_2021", "dens_1800", "dens_2011")])
# nom_test_CAH <- "ts_recensements_1800-2011_denscomm_denspop"

# Si on veut utiliser les données des évolutions par phases plutôt que les données pour chaque recensement
# PourCAH <- dep[, c("Département", "CODE_DEPT", "dens_comm_1800", "dens_comm_2021", "dens_1800", "dens_2011", "tx_evol_1800_1836", "tx_evol_1836_1886", "tx_evol_1886_1968", "tx_evol_1968_1999", "tx_evol_1999_2021")]
# nom_test_CAH <- "evol_phases_1800-2011_denscomm_denspop"

# Évolutions par phases mais sans la densité
PourCAH <- dep[, c("Département", "CODE_DEPT", "tx_evol_1800_1836", "tx_evol_1836_1886", "tx_evol_1886_1968", "tx_evol_1968_1999", "tx_evol_1999_2021")]
nom_test_CAH <- "evol_phases_1800-2011"


# On retire Aveyron et Paris
PourCAH <- subset(PourCAH, PourCAH$Département != "Aveyron")
# nom_test_CAH <- paste0(nom_test_CAH, "_sfAveyron")
PourCAH <- subset(PourCAH, PourCAH$Département != "Paris")
# nom_test_CAH <- paste0(nom_test_CAH, "_sf_Paris")
nom_test_CAH <- paste0(nom_test_CAH, "_sf_ParisAveyron")


# Préparation des données
PourCAH <- na.omit(PourCAH)
row.names(PourCAH) <- PourCAH$Département
PourCAH$Département <- NULL
PourCAH$CODE_DEPT <- NULL
PourCAH$`1800` <- NULL # Inutile car sert de base 100
PourCAH$geometry <- NULL
# PourCAH <- scale(PourCAH) # Standardisation
NbrVariables <- ncol(PourCAH)

selecVarCAH <- colnames(PourCAH)


# Réalisation de la typologie
res.pca <- PCA(PourCAH, graph = FALSE)
#res.pca <- PCA(PourCAH, ncp = 5, graph = FALSE) # 50 % of cumulative variance

# res.hcpc <- HCPC(res.pca, graph = TRUE, method = "ward", metric = "euclidian") #Ici coupure à 8 classes pas trop mal
# res.hcpc <- HCPC(res.pca, graph = FALSE, nb.clust = 7, method = "ward", metric = "euclidian") #Pour faire la coupure de manière déterministe

res.hcpc <- agnes(res.pca$ind$coord, metric = "euclidiean", method = "ward")

dev.off()
## null device 
##           1
# Réalisation du dendrogramme en passant par plot
dendro.hcpc <- as.dendrogram(res.hcpc)
plot(dendro.hcpc, leaflab = "none", ylab = "Dissimilarité")
inertie <- sort(res.hcpc$height, decreasing = TRUE)
plot(inertie[1:20], type = "s", xlab = "Nombre de classes", ylab = "Inertie")

# Affichage de différents graphiques pour aider au découpage
sortedHeight <- sort(res.hcpc$height^2, decreasing = TRUE)
plot(sortedHeight,
     type = "h",
     xlab = "Noeuds",
     ylab = "Niveau d'agrégation")
relHeight <- sortedHeight / sum(sortedHeight) * 100
cumHeight <- cumsum(relHeight)
barplot(relHeight[1:30], names.arg = seq(1, 30, 1),
        col = "black", border = "white", xlab = "Noeuds",
        ylab = "Part de l'inertie totale (%)",
        main = "Diagramme de niveaux")

4.5.3 Choix nombre de classes

# Coupure de l'arbre (k = nombre de classes)
nclass <- 5
cluspop <- cutree(res.hcpc, k = nclass)

# couleurs <- c("#e41a1c","#377eb8","#4daf4a","#984ea3") # Pour 4
# couleurs <- c("#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00") # Pour 5
couleurs <- c("#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf") # Pour 8

4.5.4 Représentation valeurs absolues

# Valeurs absolues

NomsGroupesCAH <- paste ("Groupe",1 :nclass)

# On intègre ces données dans le tableau de départ
PourCAH <- as.data.frame(PourCAH, stringsAsFactors = FALSE)
PourCAH$Groupes <- factor(cluspop,
                          levels = 1:nclass,
                          labels = paste(NomsGroupesCAH))

PourCAH$Département <- row.names(PourCAH)
# On rajoute le numéro de département
PourCAH <- merge (PourCAH, evol_deps_100 [, c("Département", "CODE_DEPT")], by = "Département")
# Calcul de la moyenne des variables

clusProfile <- aggregate(PourCAH [, 2:(NbrVariables+1)],
                         by = list(PourCAH$Groupes),
                         mean)
colnames(clusProfile)[1] <- "Groupes"

clusLong <- melt(clusProfile, id.vars = "Groupes")

ggplot(clusLong) +
  geom_bar(aes(x = variable, y = value, fill = Groupes),
           stat = "identity") +
  # scale_fill_brewer() +
  scale_fill_manual(values=couleurs) + 
  facet_wrap(~ Groupes) +
  theme_bw()

ggplot(clusLong) +
  geom_bar(aes(x = variable, y = value, fill = Groupes),
           stat = "identity") +
  scale_fill_manual(values=couleurs) +
  facet_wrap(~ Groupes) +
  coord_flip() +
  theme_bw()

dev.print(device = svg, file = paste0("sorties/CAH_tps_long/", nom_test_CAH, "val_abs.svg"))
## png 
##   2
ggplot(clusLong) +
  geom_line(aes(x = variable, y = value, group = 1)) +
  scale_fill_brewer() +
  theme(axis.text.x = element_text(angle = 56, hjust = 1)) + # Ne marche pas ?
  theme(strip.text.x = element_text(angle = 45, hjust = 1)) + # Ne marche pas ?
  facet_wrap(~ Groupes) +
  theme_bw()

4.5.5 Représentation valeurs standardisées

# On intègre ces données dans le tableau de départ

PourCAHz <- scale(PourCAH[,c(2:(NbrVariables+1))])
PourCAHz <- as.data.frame(PourCAHz, stringsAsFactors = FALSE)

PourCAHz$Groupes <- PourCAH$Groupes


PourCAHz$CODGEO <- row.names(PourCAHz)
# Calcul de la moyenne des variables
clusProfileStd <- aggregate(PourCAHz [, 1:NbrVariables],
                         by = list(PourCAH$Groupes),
                         mean)
colnames(clusProfileStd)[1] <- "Groupes"
clusLongStd <- melt(clusProfileStd, id.vars = "Groupes")
# clusLongStd <- merge(clusLongStd, ratio[, 1:2], by.x = "variable", by.y = "CODE") # Pour lisibilité du graphique
# colnames(clusLongStd)[4] <- "Variable"

ggplot(clusLongStd) +
  geom_bar(aes(x = variable, y = value, fill = Groupes),
           stat = "identity") +
  #  scale_fill_grey() +
  scale_fill_manual(values=couleurs) + 
  facet_wrap(~ Groupes) +
  coord_flip() + theme_bw()

dev.print(device = svg, file = paste0("sorties/CAH_tps_long/", nom_test_CAH, "val_stdrd.svg"))
## png 
##   2

4.5.6 Cartographie CAH

# Cartographie

# Remettre groupes dans carto
typo <- merge(dep,PourCAH[ , c("CODE_DEPT","Groupes")], by.x = "CODE_DEPT", by.y = "CODE_DEPT")

# mf_export(x = typo, export = "svg", filename = "figures/TypoEspaceGeo.svg", 
#           width = 5, theme = "nevermind") # Si souhait d'export

par(mfrow = c(1, 1))
par(mar=c(0,0,1.2,0))
plot(st_geometry(dep), border = "#1A1A19",lwd = 1)

typoLayer(x = typo, var = "Groupes",  
          col = couleurs,
          border = NA, 
          #legend.title = "Typologie des communes fusionnantes/nà partir de critères socio-économiques",
          legend.title.cex = 0.7,
          legend.values.cex = 0.6,
          legend.pos = "left", add = T)

layoutLayer(title = "Typologie exploratoire des départements en fonction de l'évolution de leur nombre de communes",
            author = "G. Bideau, 2023.",
            tabtitle = TRUE, frame = FALSE, col = "white", coltitle = "black",
            sources = "Sources : base Cassini, INSEE, IGN, 2023.")

   # Ajout d'un carton pour la région parisienne #     NE MARCHE PAS CAR PROBLÈME DE LA GESTION DES COULEURS
  #   par(new = TRUE)
  #   par(fig=c(0.5, 1, 0, 0.5)) # On indique où placer le carton
  #   par(mar = c(0, 0, 0, 0)) # On réduit les marges au maximum
  #   typo_IdF <- subset ( typo,  typo$CODE_DEPT == "75" |  typo$CODE_DEPT == "77" |  typo$CODE_DEPT == "78" |  typo$CODE_DEPT == "91" |
  #                        typo$CODE_DEPT == "92" |  typo$CODE_DEPT == "93" |  typo$CODE_DEPT == "94" |  typo$CODE_DEPT == "95")
  #   typoLayer(x = typo_IdF, var = "Groupes",
  #         col = c(couleurs),
  #         border = NA,legend.pos = "na", add = T)
  # par(fig=c(0, 1, 0, 1)) # On reprend l'ensemble de la place pour les figures

  # dev.print(device = svg, file = paste0("sorties/CAH_tps_long/", nom_test_CAH, "_carte.svg"))

4.5.7 Croisement avec d’autres variables

# Création d'une variable surface
# Si on part de rien, jouer les deux lignes ci-dessous
# typo <- st_read("sorties/typo.gpkg", quiet = TRUE)
comparaisons <- data.frame( table (typo$Groupes))


comparaisons$surface_moy <- round(tapply (typo$surface, typo$Groupes, mean), 2) # On fait la moyenne de la surface
comparaisons$surface_med <- round(tapply (typo$surface, typo$Groupes, median), 2) # On fait la médiane de la surface

comparaisons$dens_comm_1800_moy <- round(tapply (typo$dens_comm_1800, typo$Groupes, mean), 2) # On fait la moyenne de la densité communale en 1800
comparaisons$dens_comm_1800_med <- round(tapply (typo$dens_comm_1800, typo$Groupes, median), 2) # On fait la médiane de la densité communale en 1800

comparaisons$dens_comm_2021_moy <- round(tapply (typo$dens_comm_2021, typo$Groupes, mean), 2) # On fait la moyenne de la densité communale en 2021
comparaisons$dens_comm_2021_med <- round(tapply (typo$dens_comm_2021, typo$Groupes, median), 2) # On fait la médiane de la densité communale en 2021

comparaisons$dens_1800_moy <- round(tapply (typo$dens_1800, typo$Groupes, mean), 2) # On fait la moyenne de la densité en 1800
comparaisons$dens_1800_med <- round(tapply (typo$dens_1800, typo$Groupes, median), 2) # On fait la médiane de la densité en 1800

comparaisons$dens_2011_moy <- round(tapply (typo$dens_2011, typo$Groupes, mean), 2) # On fait la moyenne de la densité en 2021
comparaisons$dens_2011_med <- round(tapply (typo$dens_2011, typo$Groupes, median), 2) # On fait la médiane de la densité en 2021

comparaisons$pop_1836_moy <- round(tapply (as.numeric(typo$pop_1836), typo$Groupes, mean), 2) # On fait la moyenne de la population en 1836
comparaisons$pop_1836_med <- round(tapply (as.numeric(typo$pop_1836), typo$Groupes, median), 2) # On fait la médiane de la population en 1836

comparaisons$pop_2011_moy <- round(tapply (as.numeric(typo$pop_2011), typo$Groupes, mean), 2) # On fait la moyenne de la population en 1836
comparaisons$pop_2011_med <- round(tapply (as.numeric(typo$pop_2011), typo$Groupes, median), 2) # On fait la médiane de la population en 1836

comparaisons$nbr_com_1800_moy <- round(tapply (typo$"1800", typo$Groupes, mean), 2) # Moyenne du nombre de communes en 1800
comparaisons$nbr_com_2021_moy <- round(tapply (typo$"2021", typo$Groupes, mean), 2) # Moyenne du nombre de communes en 2011


tmp <- comparaisons[, c("Var1", "Freq", "surface_moy", "surface_med", "nbr_com_1800_moy", "nbr_com_2021_moy", "dens_comm_1800_moy", "dens_comm_1800_med", "dens_comm_2021_moy", "dens_comm_2021_med", "dens_1800_moy", "dens_1800_med", "dens_2011_moy", "dens_2011_med", "pop_1836_moy", "pop_1836_med", "pop_2011_moy", "pop_2011_med")]

colnames(tmp) <- c("Groupe", "Fréquence", "Surface moyenne (km²)", "Surface médiane (km²)", "Nombre de communes moyen en 1800", "Nombre de communes moyen en 2021", "Densité communale en 1800 (moyenne)", "Densité communale en 1800 (médiane)", "Densité communale en 2011 (moyenne)", "Densité communale en 2011 (médiane)", "Densité en 1836 (moyenne)", "Densité en 1836 (médiane)", "Densité en 2011 (moyenne)", "Densité en 2011 (médiane)", "Population en 1836 (moyenne)", "Population en 1836 (médiane)", "Population en 2011 (moyenne)", "Population en 2011 (médiane)")

table <- condformat(tmp)%>%
  theme_caption(caption = "Groupes de la typologie vis-à-vis de différentes caractéristiques des départements") %>%
  theme_htmlWidget(number_of_entries = nrow(tmp))
print(table)
table <- condformat(tmp)%>%
          rule_fill_gradient2("Surface moyenne (km²)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Surface médiane (km²)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Nombre de communes moyen en 1800", low = "blue", high = "red") %>%
          rule_fill_gradient2("Nombre de communes moyen en 2021", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité communale en 1800 (moyenne)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité communale en 1800 (médiane)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité communale en 2011 (moyenne)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité communale en 2011 (médiane)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité en 1836 (moyenne)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité en 1836 (médiane)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité en 2011 (moyenne)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Densité en 2011 (médiane)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Population en 1836 (moyenne)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Population en 1836 (médiane)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Population en 2011 (moyenne)", low = "blue", high = "red") %>%
          rule_fill_gradient2("Population en 2011 (médiane)", low = "blue", high = "red") %>%
  theme_caption(caption = "Groupes de la typologie vis-à-vis de différentes caractéristiques des départements") %>%
  theme_htmlWidget(number_of_entries = nrow(tmp))
print(table)

4.6 Le cas de l’Aveyron

Étude exploratoire menée mi-juillet 2023. Laissée de côté à partir du moment ou boucle faite pour tous les départements.

# On sélectionne uniquement l'Aveyron
cassini_reduite <- subset(cassini, departement_1999 == "12")

evol_nbr_com_reduit <- data.frame() # Création d'un objet pour récupérer les résultats de la base réduite


# Boucle pour exploiter les données date par date
for (label in labels_data_pop) {
  annee <- substr(label, start =5, stop = nchar(label)-5) # On repère le n° de l'année en segmentant le label
  sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop" | cassini_reduite[, label] == "lac.") # On crée un sous-tableau comptant uniquement les communes dont la population nous intéresse, à l'année donnée
  # sous_tableau_reduit <- subset(cassini_reduite, cassini_reduite[, label] == "pop") # Juste avec les populations connues
  nbr_com_reduit <- nrow(sous_tableau_reduit) # On compte le nombre de communes
  
  i_reduit <- c(annee, nbr_com_reduit) # On compile les résultats totaux
  evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_reduit, stringsAsFactors = FALSE)
}

# On traite à la main les deux années 2011 et 2021
# Pour 2011, on fait la liste des CODGEO unique de 2021 et on multiplie par leur nombre de communes fusionnantes (donne le nombre de communes en 2011) 
# Pas très propre mais pas l'énergie de faire mieux là...
CODGEO_2021_reduit <- as.data.frame(unique(cassini_reduite$commune_mars_2021))
colnames(CODGEO_2021_reduit) <- "CODGEO_new"
# On joint pour avoir le nombre de communes fusionnantes
CODGEO_2021_reduit <- merge(df_new[c("CODGEO_new", "NbrComFus")], CODGEO_2021_reduit, by = "CODGEO_new", all.y = TRUE)
# Pour les communes non fusionnantes, on indique qu'il y en a une
CODGEO_2021_reduit$NbrComFus[is.na(CODGEO_2021_reduit$NbrComFus)] <- 1

i_2011_reduit <- c(2011, sum(CODGEO_2021_reduit$NbrComFus))
evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2011_reduit)


# Pour 2021, on liste simplement le nombre de CODGEO uniques de 2021 pour chacun des groupe
i_2021_reduit <- c(2021, length(unique(cassini_reduite$commune_mars_2021)))

evol_nbr_com_reduit <- rbind(evol_nbr_com_reduit, i_2021_reduit)

colnames (evol_nbr_com_reduit) <- c("annees", "nbr_com")

evol_nbr_com <- evol_nbr_com_reduit

# evol_nbr_com[c(1,2), 1] <- c(1795, 1800) # On modifie l'intitulé pour faciliter la représentation graphique
evol_nbr_com$annees[evol_nbr_com$annees == "an3"] <- 1795
evol_nbr_com$annees[evol_nbr_com$annees == "an8"] <- 1800

evol_nbr_com[,1] <- as.numeric(evol_nbr_com[,1]) # On passe en numérique pour faciliter la représentation
evol_nbr_com[,2] <- as.numeric(evol_nbr_com[,2]) # Si on veut faire une seule colonne



ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
  geom_line() +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) +
  labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")

ggplot(data=evol_nbr_com, aes(x=annees, y=nbr_com)) +
  geom_line() +
  ylim(0, 600) +
  scale_x_continuous (breaks = seq(1780, 2030, 20)) +
  labs(title="Évolution du nombre de communes en Aveyron", subtitle="1795-2021", x="", y = "", caption="Sources : cassini.ehess.fr, INSEE")




rm(label, annee, nbr_com_reduit, sous_tableau_reduit, i_reduit, i_2021_reduit, CODGEO_2021_reduit, i_2011_reduit)

4.7 Cartes concernant la superficie des communes

Affichage ici de cartes réalisées dans le cadre des communes nouvelles.

Carte superficie moyenne des communes
Carte superficie moyenne des communes
Carte communes nouvelles et superficie moyenne des communes
Carte communes nouvelles et superficie moyenne des communes

5 BIBLIOGRAPHIE

Bideau, Gabriel. 2017. “Les Communes Nouvelles (2010-2017) : Quelle Révolution Du Territoire ?” M\'emoire de {{Master}} 2, Sous La Direction de {{Renaud Le Goix}}, Université Paris 7 Diderot. https://nakala.fr/10.34847/nkl.2f7bbnn2.
———. 2019. Les communes nouvelles françaises (2010-2019) : Une réforme territoriale silencieuse.” Annales de Géographie 728 (4/2019): 57–85. https://www.cairn.info/revue-annales-de-geographie-2019-4-page-57.htm.